Golang值传递和指针传递 package main import ( "fmt" ) func swap1(x, y, p *int) { if *x > *y { *x, *y = *y, *x } *p = *x * *y } func swap2(x, y int) (int, int, int) { if x > y { x, y = y, x } return x, y, x * y } func main() { i := 9 j := 5 product
其实最近看了不少Golang接口以及方法的阐述都有一个地方没说得特别明白.就是在Golang编译隐式转换传递给方法使用的时候,和调用函数时的区别. 我们都知道,在我们为一个类型变量申明了一个方法的时候,我们可以使用类似于self.method来调用这个方法,而且无论你申明的方法的接收器是指针接收器还是值接收器,Golang都可以帮你隐式转换为正确的值供方法使用. 让我们来看一个例子: package main import "fmt" type duration int func (d
默认值: 整型的默认值:0 浮点型的默认值:0字符串的默认值:"" //空布尔类型的默认值:false package mainimport "fmt" func main() { var a int //0 var b float32 //%f的输出是0.000000,%v的输出是0 var c float64 //%f的输出是0.000000,%v的输出是0 var isMarryied bool //false var name string //&quo
Go对象可以插入到template中,然后把对象的值表现在template中,你可以一层层的分解这个对象,去找他的子字段,当前对象用'.'来表示,所以当当前对象是一个string的时候,你可以用{{.}}.这个包默认使用fmt包来把插入的对象转成string 插入某个对象字段的值,我们在字段名字前面加上一个'.'前缀就可以了,例如我们定义一个struct type Person struct { Name string Age int Emails []string Jobs []*Jobs }
不可或缺的函数,在Go中定义函数的方式如下: func (p myType ) funcName ( a, b int , c string ) ( r , s int ) { return } 通过函数定义,我们可以看到Go中函数和其他语言中的共性和特性 共性 关键字——func 方法名——funcName 入参——— a,b int,b string 返回值—— r,s int 函数体—— {} 特性 Go中函数的特性是非常酷的,给我们带来不一样的编程体验. 为特定类型定义函数,即为类型对象
综述 变量声明时未赋初值,则变量被自动赋值为该类型的零值(固定值) func new(Type) *Type new()返回一个指针,指向新分配的该类型的零值,不是空指针(nil).the value returned is a pointer to a newly allocated zero value of that type. func make(t Type, size ...IntegerType) Type make()只适用于slice.map.chan,此三种类型创建时推荐使用