포인터

7687 단어 Go

교과서의 지침

package main

import "fmt"

func main() {
    var n int = 100
    var p *int = &n

    fmt.Println(n)  // 100
    fmt.Println(&n) // 0xc000014078
    // fmt.Println(*n) // ポイント型ではないのでエラーになる
    fmt.Println(p)  // 0xc000014078
    fmt.Println(*p) // 100
    fmt.Println(&p) // 0xc00000c028
}
인상은 다음과 같다.

구조 포인터


그리고 모르는 것은 구조체의 지침이다
package main

import "fmt"

type Vertex struct {
    X int
    Y int
}

func main() {
    v := Vertex{1, 2}
    p := &v
    fmt.Println(v)  // {1 2}
    fmt.Println(&v) // &{1 2}

    fmt.Println(p)  // &{1 2}
    fmt.Println(*p) // {1 2}
    fmt.Println(&p) // 0xc00000c028
}
인상은 다음과 같다.

주소는 &{1 2} 형식???
아시는 분은 알려주세요.
직접 주소로 지정하면 다음과 같습니다.
package main

import "fmt"

type Vertex struct {
    X int
    Y int
}

func main() {
    v := &Vertex{1, 2}
    fmt.Println(v)  // &{1 2}
    fmt.Println(*v) // {1 2}
    fmt.Println(&v) // 0xc00000c028
}

함수를 통해 구조를 선언할 때 (봉인에 사용할 수 있습니까?)
인상이 위와 같다
package main

import "fmt"

type Vertex struct {
    x, y int
}

func New(x, y int) *Vertex {
    return &Vertex{x, y}
}

func main() {
    v := New(1, 2)  // v := &Vertex{1, 2} と同じ
    fmt.Println(v)  // &{1 2}
    fmt.Println(*v) // {1 2}
    fmt.Println(&v) // 0xc00000c028
}

좋은 웹페이지 즐겨찾기