草庐IT

pointer_traits

全部标签

pointers - golang 接口(interface)合规性编译类型检查

我从camlistore(http://code.google.com/p/camlistore/source/browse/pkg/cacher/cacher.go)中看到以下语句。var(_blobref.StreamingFetcher=(*CachingFetcher)(nil)_blobref.SeekFetcher=(*CachingFetcher)(nil)_blobref.StreamingFetcher=(*DiskCache)(nil)_blobref.SeekFetcher=(*DiskCache)(nil))我知道没有创建变量,并且语句确保编译器检查Cachin

pointers - golang 接口(interface)合规性编译类型检查

我从camlistore(http://code.google.com/p/camlistore/source/browse/pkg/cacher/cacher.go)中看到以下语句。var(_blobref.StreamingFetcher=(*CachingFetcher)(nil)_blobref.SeekFetcher=(*CachingFetcher)(nil)_blobref.StreamingFetcher=(*DiskCache)(nil)_blobref.SeekFetcher=(*DiskCache)(nil))我知道没有创建变量,并且语句确保编译器检查Cachin

pointers - 通过将指针传递给 Go 中的函数来获取不同的值

假设我想将一个指针传递给一个函数,并通过这样做更改该指针指向的结构的值。我通常会通过取消引用指针来做到这一点:typeTeststruct{Valueint}funcmain(){variTest=Test{2}varp*Test=&if(p)println(i.Value)//4}funcf(p*Test){*p=Test{4}}我的问题是,为什么这段代码没有改变值typeTeststruct{Valueint}funcmain(){variTest=Test{2}varp*Test=&if(p)println(i.Value)//2}funcf(p*Test){//?p=&Test

pointers - 通过将指针传递给 Go 中的函数来获取不同的值

假设我想将一个指针传递给一个函数,并通过这样做更改该指针指向的结构的值。我通常会通过取消引用指针来做到这一点:typeTeststruct{Valueint}funcmain(){variTest=Test{2}varp*Test=&if(p)println(i.Value)//4}funcf(p*Test){*p=Test{4}}我的问题是,为什么这段代码没有改变值typeTeststruct{Valueint}funcmain(){variTest=Test{2}varp*Test=&if(p)println(i.Value)//2}funcf(p*Test){//?p=&Test

pointers - golang 和指针接收器中的自定义错误

通过网络和stackoverflow阅读有关值接收器与指针接收器的信息,我理解基本规则是:如果您不打算修改接收器,并且接收器相对较小,则不需要指针。然后,阅读有关实现error接口(interface)(例如https://blog.golang.org/error-handling-and-go)的文章,我看到Error()函数的示例都使用指针接收器。然而,我们没有修改接收器,而且结构非常小。我觉得没有指针的代码更好(return&appError{}vsreturnappError{})。示例使用指针是否有原因? 最佳答案 首先

pointers - golang 和指针接收器中的自定义错误

通过网络和stackoverflow阅读有关值接收器与指针接收器的信息,我理解基本规则是:如果您不打算修改接收器,并且接收器相对较小,则不需要指针。然后,阅读有关实现error接口(interface)(例如https://blog.golang.org/error-handling-and-go)的文章,我看到Error()函数的示例都使用指针接收器。然而,我们没有修改接收器,而且结构非常小。我觉得没有指针的代码更好(return&appError{}vsreturnappError{})。示例使用指针是否有原因? 最佳答案 首先

pointers - 在 Go 中,类型和指向类型的指针都可以实现接口(interface)吗?

例如在下面的例子中:typeFoodinterface{Eat()bool}typevegetable_sstruct{//somedata}typeVegetable*vegetable_stypeSaltstruct{//somedata}func(pVegetable)Eat()bool{//somecode}func(pSalt)Eat()bool{//somecode}Vegetable和Salt是否都满足Food,即使一个是指针而另一个直接是结构? 最佳答案 答案很容易通过compilingthecode得到:prog.

pointers - 在 Go 中,类型和指向类型的指针都可以实现接口(interface)吗?

例如在下面的例子中:typeFoodinterface{Eat()bool}typevegetable_sstruct{//somedata}typeVegetable*vegetable_stypeSaltstruct{//somedata}func(pVegetable)Eat()bool{//somecode}func(pSalt)Eat()bool{//somecode}Vegetable和Salt是否都满足Food,即使一个是指针而另一个直接是结构? 最佳答案 答案很容易通过compilingthecode得到:prog.

pointers - 空结构 slice 的地址

我有一个关于emptystruct的基本问题,我试图了解在尝试获取两个slice的后备数组元素的地址时得到的以下不同输出:a:=make([]struct{},10)b:=make([]struct{},20)fmt.Println("&a==&b",&a==&b)fmt.Println("&a[0]==&b[0]",&a[0]==&b[0])上面的片段returns:&a==&bfalse&a[0]==&b[0]true但是,考虑以下略有更改的代码段:a:=make([]struct{},10)b:=make([]struct{},20)fmt.Println(a[0],&a[0])

pointers - 空结构 slice 的地址

我有一个关于emptystruct的基本问题,我试图了解在尝试获取两个slice的后备数组元素的地址时得到的以下不同输出:a:=make([]struct{},10)b:=make([]struct{},20)fmt.Println("&a==&b",&a==&b)fmt.Println("&a[0]==&b[0]",&a[0]==&b[0])上面的片段returns:&a==&bfalse&a[0]==&b[0]true但是,考虑以下略有更改的代码段:a:=make([]struct{},10)b:=make([]struct{},20)fmt.Println(a[0],&a[0])