1. 首页
  2. 会员
  3. WangWangZhou的信息
初级会员
  • 第 10520 位会员
  • WangWangZhou
  • 2017年07月31日 03:40:39
  • Offline
  • 19 40

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 评论了面试题 Go每日一题(31)
    mark
  • 评论了面试题 Go每日一题(23)
    ### **正确答案** - **A. `p.name`** - **C. `(*p).name`** --- ### **详细解析** #### **1. `p.name`** - 在 Go 语言中,如果 `p` 是一个指针变量,可以直接通过 `p.name` 访问其成员变量。 - Go 语言会自动解引用指针,因此不需要显式使用 `*` 操作符。 - 示例: ```go type Person struct { name string } func main() { p := &Person{name: "Alice"} fmt.Println(p.name) // 输出: Alice } ``` #### **2. `(*p).name`** - 这是传统的指针解引用方式,通过 `*p` 获取指针指向的结构体,然后访问其成员变量。 - 示例: ```go type Person struct { name string } func main() { p := &Person{name: "Alice"} fmt.Println((*p).name) // 输出: Alice } ``` --- #### **错误选项解析** #### **B. `(&p).name`** - `&p` 表示获取指针 `p` 的地址,即指向指针的指针。 - 这种方式是错误的,因为 `&p` 是一个指向指针的指针,而不是指向结构体的指针。 - 示例: ```go type Person struct { name string } func main() { p := &Person{name: "Alice"} fmt.Println((&p).name) // 编译错误: (&p).name undefined } ``` #### **D. `p->name`** - `p->name` 是 C/C++ 语言中的语法,用于通过指针访问成员变量。 - Go 语言中没有 `->` 操作符,因此这种方式是错误的。 - 示例: ```go type Person struct { name string } func main() { p := &Person{name: "Alice"} fmt.Println(p->name) // 编译错误: 语法错误 } ``` --- ### **总结** - 在 Go 语言中,通过指针变量 `p` 访问其成员变量 `name` 的正确方式是: - **`p.name`**(推荐,Go 语言会自动解引用指针)。 - **`(*p).name`**(显式解引用指针)。 - 错误的方式包括: - `(&p).name`(获取指针的地址,无意义)。 - `p->name`(Go 语言不支持 `->` 操作符)。
  • 评论了面试题 Go每日一题(29)
    mark
  • 评论了面试题 Go每日一题(66)
    mark
  • 评论了面试题 Go每日一题(65)
    mark ```go package main import "fmt" func main() { s := [3]int{1, 2, 3} a := s[:0] b := s[:2] c := s[1:2:cap(s)] fmt.Println("---a---") fmt.Println(a) fmt.Println("len:",len(a)) fmt.Println("cap:",cap(a)) fmt.Println("---b---") fmt.Println(b) fmt.Println("len:",len(b)) fmt.Println("cap:",cap(b)) fmt.Println("---c---") fmt.Println(c) fmt.Println("len:",len(c)) fmt.Println("cap:",cap(c)) } //output //---a--- //[] //len: 0 //cap: 3 //---b--- //[1 2] //len: 2 //cap: 3 //---c--- //[2] //len: 1 //cap: 2 ```