go语言学习四 - 复合类型字面量声明

Posted scala

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言学习四 - 复合类型字面量声明相关的知识,希望对你有一定的参考价值。

package main

import (
	"encoding/json"
	"fmt"
)

func main() {

	//go语言的复合大括号文面量声明非常强大和灵活
	//只要在最外层声明完整的复合类型在大括号内部就不需要再声明类型而直接用大括号了
	a := [][]int{
		{1, 2, 3, 4}, //这里不必再用 []int{1,2,3,4} 声明,如果用的话编译器提示冗余的类型声明(Redundant type declaration)
		{5, 6, 7, 8},} //多行的复合类型声明最后一行大括号换行前需要加一个逗号,或者最后一个大括号不换行也行


	//很方便的声明一个比较常用的类似java的List<Map<String,String>>结构
	var list = []map[string]string{
		{"name": "wengmj", "id": "1"},
		{"name": "chengp", "id": "2"}, //这里结尾必须加一个 "奇怪的逗号",如果想不加这个逗号最后一个大括号不换行即可
	}

	fmt.Println(a)

	//将这个常用的结构转换为 json
	if data, err := json.Marshal(list); err == nil {
		fmt.Printf("%s
", data)
		 // json.Marshal(v interface{}} (byte[],error)
		 // 所以直接打印显式的是 byte[] , 还可以用 fmt.Println(string(data)) 将字节数组转换为 string
	}
}

以上是关于go语言学习四 - 复合类型字面量声明的主要内容,如果未能解决你的问题,请参考以下文章

go 复合类型: 数组slicemap结构体

Go语言基础-----高级数据类型

go语言之接口

Go语言中初始化变量中字面量&Type{}newmake的区别

[Go]接口的运用

java 常量池