指向指针的指针的指针
package main import "fmt" func main(){ var a int = 1 var ptr1 *int = &a var ptr2 **int = &ptr1 var ptr3 **(*int) = &ptr2 // 也可以写作:var ptr3 ***int = &ptr2 // 依次类推 fmt.Println("a:", a) fmt.Println("ptr1", ptr1) fmt.Println("ptr2", ptr2) fmt.Println("ptr3", ptr3) fmt.Println("*ptr1", *ptr1) fmt.Println("**ptr2", **ptr2) fmt.Println("**(*ptr3)", **(*ptr3)) // 也可以写作:***ptr3 }
执行结果:
我觉得这个解说有点模糊,因为没有区分数组和切片:
声明数组:
nums := [3]int{1,2,3,}
声明切片:
nums := []int{1,2,3}
没有所谓没有声明长度的数组存在。
多维数组传参:
package main func prt(arr [][] float32){ for i:= 0;i < 3;i++{ println(arr[i][0]) } } func main(){ var arr = [][]float32 {{-1,-2},{-3,-4},{-5}} prt(arr) }
func main() { var array = []int{1, 2, 3, 4, 5} /* 未定义长度的数组只能传给不限制数组长度的函数 */ setArray(array) /* 定义了长度的数组只能传给限制了相同数组长度的函数 */ var array2 = [5]int{1, 2, 3, 4, 5} setArray2(array2) } func setArray(params []int) { fmt.Println("params array length of setArray is : ", len(params)) } func setArray2(params [5]int) { fmt.Println("params array length of setArray2 is : ", len(params)) }
输出:
params array length of setArray is : 5 params array length of setArray2 is : 5
初始化数组长度后,元素可以不进行初始化,或者不进行全部初始化,但未进行数组大小初始化的数组初始化结果元素大小就为多少。
Go 没有面向对象,而我们知道常见的 Java。
C++ 等语言中,实现类的方法做法都是编译器隐式的给函数加一个 this 指针,而在 Go 里,这个 this 指针需要明确的申明出来,其实和其它 OO 语言并没有很大的区别。
在 C++ 中是这样的:
class Circle { public: float getArea() { return 3.14 * radius * radius; } private: float radius; } // 其中 getArea 经过编译器处理大致变为 float getArea(Circle *const c) { ... }
在 Go 中则是如下:
func (c Circle) getArea() float64 { //c.radius 即为 Circle 类型对象中的属性 return 3.14 * c.radius * c.radius }
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
2200go-pointer-to-pointer
指向指针的指针的指针
执行结果:
a: 1ptr1 0xc0420140b0ptr2 0xc042004028ptr3 0xc042004030*ptr1 1**ptr2 1**(*ptr3) 12199go-passing-arrays-to-functions
我觉得这个解说有点模糊,因为没有区分数组和切片:
声明数组:
声明切片:
没有所谓没有声明长度的数组存在。
2198go-passing-arrays-to-functions
多维数组传参:
2197go-passing-arrays-to-functions
输出:
初始化数组长度后,元素可以不进行初始化,或者不进行全部初始化,但未进行数组大小初始化的数组初始化结果元素大小就为多少。
2196go-method
Go 没有面向对象,而我们知道常见的 Java。
C++ 等语言中,实现类的方法做法都是编译器隐式的给函数加一个 this 指针,而在 Go 里,这个 this 指针需要明确的申明出来,其实和其它 OO 语言并没有很大的区别。
在 C++ 中是这样的:
在 Go 中则是如下: