Go语言中,一会有有*
,一会儿没有,请问我们应该如何判断合适使用*
与否?
cidr := make([]*router.CIDR, 0, 16)
cidr := make([]router.CIDR, 0, 16)
Go语言中,一会有有*
,一会儿没有,请问我们应该如何判断合适使用*
与否?
cidr := make([]*router.CIDR, 0, 16)
cidr := make([]router.CIDR, 0, 16)
根据你的需求来。指针是存储变量在内存中的地址。
如果一个方法需要修改传入的参数值,则可以通过传入指针。比如简单的数据类型它们在go中是值传递的,想修改他们就只能通过指针。
func changeValue(a *string, b *string) {
*a += *b
}
func main() {
a := "Hello"
b := " World"
changeValue(&a, &b)
fmt.Println(a) // Hello World
}
还有一些类型转换,比如字节转字符串
func BytesToString(b []byte) string {
return *(*string)(unsafe.Pointer(&b))
}
2 回答1.4k 阅读
2 回答1.4k 阅读
2 回答1.3k 阅读
2 回答1.3k 阅读
3 回答882 阅读
2 回答1k 阅读
2 回答1.1k 阅读
你需要打好一下基础了,你所谓的
*
其实是go中的 指针运算符 , 它可以表示一个变量是指针类型 , 也可以表示一个指针变量所指向的存储单元 ,也就是这个地址所存储的值