Skip to content

Instantly share code, notes, and snippets.

@kmtr
Created December 5, 2016 18:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kmtr/ea423d2129c18d9db909a51ba89da048 to your computer and use it in GitHub Desktop.
Save kmtr/ea423d2129c18d9db909a51ba89da048 to your computer and use it in GitHub Desktop.
type Account struct {
Email string
Password string
Rank int
}
func main() {
account := new(Account)
account.Email = "sample@example.com"
account.Password = "password"
account.Rank = 1
fmt.Printf("%v", account)
}
type AccountParam struct {
Account
PasswordCurrent string `json:"password_current"`
Rank int `json:"user_rank"`
}
package main
type Account struct {
Email string `json:"email"`
Password string `json:"password"`
Rank int `json:"rank"`
}
type AccountParam struct {
Account
PasswordCurrent string `json:"password_current"`
}
func main() {
var a *Account
a = new(AccountParam)
}
func main() {
a := AccountParam{}
b := Account{}
a.Account = b
fmt.Println(a)
}
func main() {
account := &Account{
Email: "sample@example.com",
Password: "password",
Rank: 1,
}
fmt.Printf("%v", account)
}
func main() {
account := Account{
Email: "sample@example.com",
Password: "password",
Rank: 1,
}
fmt.Printf("%v", account)
}
package main
import "fmt"
type Account struct {
Email string
Password string
Rank int
}
func updatePassword(account Account, password string) {
account.Password = password
fmt.Printf("account.Password(func) : %s\n", account.Password)
fmt.Printf("account.Password(pointer): %p\n", &account)
}
func updatePasswordP(account *Account, password string) {
account.Password = password
fmt.Printf("accountP.Password(func) : %s\n", account.Password)
fmt.Printf("accountP.Password(pointer): %p\n", account)
}
func main() {
account := Account{
Email: "sample@example.com",
Password: "password",
Rank: 1,
}
fmt.Printf("account.Password(pointer): %p\n", &account)
fmt.Printf("account.Password(before): %s\n", account.Password)
updatePassword(account, "new password")
fmt.Printf("account.Password(after) : %s\n", account.Password)
fmt.Println("-----------------")
accountP := &Account{
Email: "sample@example.com",
Password: "password",
Rank: 1,
}
fmt.Printf("accountP.Password(pointer): %p\n", accountP)
fmt.Printf("accountP.Password(before): %s\n", accountP.Password)
updatePasswordP(accountP, "new password")
fmt.Printf("accountP.Password(after) : %s\n", accountP.Password)
}
$ go run ac.go
account.Password(pointer): 0xc420014150
account.Password(before): password
account.Password(func) : new password
account.Password(pointer): 0xc420014180
account.Password(after) : password
-----------------
accountP.Password(pointer): 0xc4200141b0
accountP.Password(before): password
accountP.Password(func) : new password
accountP.Password(pointer): 0xc4200141b0
accountP.Password(after) : new password
{"Email":"sample@example.com","Password":"password","Rank":1}
package main
import (
"bytes"
"encoding/json"
"fmt"
)
type Account struct {
Email string `json:"email"`
Password string `json:"password"`
Rank int `json:"rank"`
}
func main() {
account := &Account{
Email: "sample@example.com",
Password: "password",
Rank: 1,
}
// encode
buf := new(bytes.Buffer)
json.NewEncoder(buf).Encode(account)
fmt.Println(buf.String())
// decode
decoded := new(Account)
json.NewDecoder(buf).Decode(decoded)
fmt.Println(decoded)
}
// 実行結果
// {"email":"sample@example.com","password":"password","rank":1}
//
// &{sample@example.com password 1}
// package, import, Account構造体定義省略
type UserAccount Account
func main() {
account := &UserAccount{
Email: "sample@example.com",
Password: "password",
Rank: 1,
}
// encode
buf := new(bytes.Buffer)
json.NewEncoder(buf).Encode(account)
fmt.Println(buf.String())
// decode
decoded := new(UserAccount)
json.NewDecoder(buf).Decode(decoded)
fmt.Println(decoded)
}
// 実行結果
// {"email":"sample@example.com","password":"password","rank":1}
//
// &{sample@example.com password 1}
// package, import, Account構造体定義省略
type AccountParam struct {
Account
}
func main() {
account := new(AccountParam)
account.Email = "sample@example.com"
account.Password = "password"
account.Rank =
// encode
buf := new(bytes.Buffer)
json.NewEncoder(buf).Encode(account)
fmt.Println(buf.String())
// decode
decoded := new(AccountParam)
json.NewDecoder(buf).Decode(decoded)
fmt.Println(decoded)
}
// 実行結果
// {"email":"sample@example.com","password":"password","rank":1}
//
// &{sample@example.com password 1}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment