转自: https://studygolang.com/articles/11313 golang中是没有class的,但是有一个结构体struct,有点类似,他没有像java,c++中继承的概念,但是他有一个类似功能的结构嵌入 简单的结构体声明和使用 type User struct{ name string age int address string } user:= User{name:"测试",age:10} user.address="广州市" f.Pr
代码示例: package main import "fmt" type Human struct { name string age int weight int } type Student struct { Human // 匿名字段,那么默认Student就包含了Human的所有字段 speciality string } func main() { // 我们初始化一个学生 mark := Student{Human{, }, "Computer Science&q
golang允许使用匿名结构体,形如 type Test struct { param1 struct { param2 string } } 一般在使用的时候可以直接这样初始化 a := Test{ param1: struct{ param2 string }{param2: "test"}, } 或者 b := new(Test) b.param1.param2 = "test" 但今天遇到一种情况 匿名结构体的成员上有tag声明,形如 type Test s
package main import "fmt" type Person struct { name string //名字 sex byte //性别 age int //年龄 } type Student struct { Person //只有类型,没有名字,匿名字段,继承了Person的成员 id int addr string } func main() { //顺序初始化 }, , "北京"} fmt.Println("s1 = "
golang可以在struct中的每个字段,写上一个tag.这个tag可以通过反射的机制获取到,最常用的场景就是json序列化和反序列化 package main import ( "encoding/json" "fmt" ) type test struct { Name string `json:"list_name"` Age int `json:"age"` } func main() { var p test =
package main import ( "encoding/json" "errors" "fmt" "reflect" "strconv" "time" ) type User struct { a string b string } type S struct { User Name string Age int Address string } //结构体转map方法1 fun
package main import "fmt" /* squares返回一个匿名函数 * 该匿名函数每次调用返回下一个数的平方 * func name(parameter-list) (result-list) { * body * } */ func squares() func() int { var x int return func() int { x++ return x * x } } func main() { f := squares() //返回函数指针 fmt.
相比于encoding, 使用unsafe性能更高 type MyStruct struct { A int B int } var sizeOfMyStruct = int(unsafe.Sizeof(MyStruct{})) func MyStructToBytes(s *MyStruct) []byte { var x reflect.SliceHeader x.Len = sizeOfMyStruct x.Cap = sizeOfMyStruct x.Data = uintptr(uns
Go语言支持匿名函数,即函数可以像普通变量一样被传递或使用. 使用方法如下: main.go package main import ( "fmt" ) func main() { var v func(a int) int v = func(a int) int { return a * a } fmt.Println(v()) //两种写法 v1 := func(i int) int { return i * i } fmt.Println(v1()) } GO语言的匿名函数就是闭