結構體使用細節3

package main

import (
“encoding/json”
“fmt”
)

type Monster struct {
Name string
Age int
skill string
}

func main(){
/*
結構體的注意事項和使用細節
4)struct的每個字段上,可以寫上一個tag,該tag可以通過反射機制獲取,常見的使用場景就是序列號的反序列化[舉例説明]
代碼説明;將struct變量進行json處理;
問題:json處理後的字段名也是首字母大寫,這樣和我們是將json后的字符串返回給其他程序使用,比如jquery,php等,那麽可能他們的不習慣這個命名方式,怎麽辦?
解決方案
1)將Monster的字段首字母小寫,這個行不通,你會發現處理後,返回的是空字符串,因爲json.Marshai相當於在其他包訪問monster結構體,你首字母小寫就不能在其包訪問。
2)使用tag標簽來解決,看老師演示
3)結構體進行type重新定義(相當於取別名)Golang認爲是新的數據類型,但是相互間可以強轉
type Student struct{
Name string
Age int
}
type Stu Student

func main(){
var stu1 Student
var stu2 Stu
stu2 =stu1
//正確嗎?錯誤,可以這樣修改stu2=Stu(stu1)//ok
fmt.Println(stu1,stu2)

type integer int

func main(){
var i integer =10
var j int =20
j = i//正確嗎?不可以,修改:j<int(i)
fmt.Println(i,j)
}

4)struct的每個字段上,可以協商一個tag:該tag可以通過反射機制獲取,常見的使用場景就是序列化和反序列化。
舉例
*/
//1.創建一個Monster變量
monster := Monster{"牛魔王",500,"芭蕉扇~"}
//2.將monster變量序列化為json格式字符串
jsonStr,err := json.Marshal(monster)
if err != nil{
	fmt.Println("json 處理錯誤",err)
}
fmt.Println("JsonStr",string(jsonStr))

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值