Go 문자열 포인터

1 개요[ | ]

Go 문자열 포인터
package main

import "fmt"

func main() {
	s := "Hello, 世界"
	var pointer *string
	pointer = &s

	fmt.Println(pointer)       // 0xc000010250
	fmt.Printf("%#v", pointer) // (*string)(0xc000010250)
}
package main

import "fmt"

func main() {
	temp := "Hello, 世界"
	var pointer *string
	pointer = &temp
	fmt.Println(pointer)  // 0xc000010250
	fmt.Println(*pointer) // Hello, 世界
}
package main

import "fmt"

func main() {
	var x *string
	fmt.Printf("%v\n", x) // <nil>
	fmt.Printf("%s\n", x) // %!s(*string=<nil>)

	temp := "Hello, 世界"
	x = &temp
	fmt.Printf("%v\n", x)  // 0xc000010230
	fmt.Printf("%s\n", x)  // %!s(*string=0xc0000a6210)
	fmt.Printf("%s\n", *x) // Hello, 世界
}

2 Unmarshal 예시[ | ]

package main

import (
	"encoding/json"
	"fmt"
)

type MyObject struct {
	ID          int     `json:"id"`
	Name        string  `json:"name"`
	DisplayName *string `json:"displayName"`
}

func main() {
	var bytes1 = []byte(`{"id":1,"name":"hello","displayName":"world"}`)
	var myObject1 MyObject
	err := json.Unmarshal(bytes1, &myObject1)
	if err != nil {
		fmt.Println("error:", err)
	}
	fmt.Printf("%v\n", myObject1)
	fmt.Printf("DisplayName: %s\n", *myObject1.DisplayName)
}
package main

import (
	"encoding/json"
	"fmt"
)

type MyObject struct {
	ID          int     `json:"id"`
	Name        string  `json:"name"`
	DisplayName *string `json:"displayName"`
}

func main() {
	var myObject1, myObject2 MyObject
	_ = json.Unmarshal([]byte(`{"id":1,"name":"hello","displayName":"hello everyone"}`), &myObject1)
	_ = json.Unmarshal([]byte(`{"id":2,"name":"world","displayName":nil}`), &myObject2)

	fmt.Printf("%+v\n", myObject1)              // {ID:1 Name:hello DisplayName:0xc000010340}
	fmt.Printf("%+v\n", myObject1.DisplayName)  // 0xc000010340
	fmt.Printf("%+v\n", *myObject1.DisplayName) // hello everyone
	fmt.Printf("%+v\n", myObject2)              // {ID:0 Name: DisplayName:<nil>}
	fmt.Printf("%+v\n", myObject2.DisplayName)  // <nil>
	fmt.Printf("%+v\n", *myObject2.DisplayName) // ★ panic: runtime error: invalid memory address or nil pointer dereference
}

3 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}