Go 之基礎速學 (六) golang 裡 struct 結構體初始化的幾種方式(一)

huxiaobai_001發表於2020-05-07
package main

import (
   "fmt"
)

//main函式是入口函式  不能有引數 也不能有返回值
func main(){
/*
 * struct結構體類似java裡面類的呼叫 案例一
 * user為定義的變數 new(struct結構體)
 * user.Uname = "" 這樣就可以為struct結構體裡面的屬性賦值
 * user.ToString()在結構體的相關方法裡面就可以使用到我們上邊為結構體裡面的屬性賦上的值
*/
 //user:=new(models.UserModel) //user.Uname="huxiaobai_001" //fmt.Println(user.ToString())

//struct結構體 案例二
  //這一步其實就已經開闢了記憶體空間並且初始化了struct結構體裡面引數的預設值 NewsId int 預設值0  NewsTitle string 預設值   為空""  NewsContent string 預設值也為空""
 //var news NewsModel 
 //我們列印struct結構體會發現 {0  } 就已經有預設值存在了
  //fmt.Println(news)
 //接下里就可以為結構體裡面的引數賦值
  //news.NewsId = 123
 //news.NewsContent = "wahahaha" 
 //news.NewsTitle = "title" 
 //列印出的結果如下 :{123 title wahahaha}
 //fmt.Println(news)

//struct結構體 案例三
  //這相當於是另外一種的初始化struct結構的方式
  //var news NewsModel = NewsModel{123,"wahaha","title1"}
 //當然我們也可以執行引數的書寫順序比如:
  //var news NewsModel = NewsModel{NewsContent: "wocao",NewsId: 1234,NewsTitle: "biaoti"}
 //fmt.Println(news)

//struct結構體 案例四
 //使用指標形式初始化並賦值
 //var news *NewsModel
 //news = new(NewsModel) 
 //news.title 直接賦值即可 當然也可以 (*news).NewsId=123這麼賦值也可以  前者和我們上邊學到的有點不一樣哈
 //news.NewsTitle = "titile"
 //(*news).NewsId = 1223 
 //fmt.Println(news) 
 //如果要列印結構體裡面屬性的記憶體地址 得這麼使用 &(news.NewsTitle)  
 //fmt.Println(&(news.NewsTitle))

//struct結構體 案例五
  var news *NewsModel
  news = new(NewsModel)
   //第五種結構體賦值的方式
  *news = NewsModel{123,"title","content"}
   //上邊的賦值方式可以使用下邊的來代替
  //news  = &NewsModel{123,"title","content"}
  fmt.Println(*news)
}

//配合結構體的演示
type NewsModel struct {
   NewsId int
   NewsTitle,NewsContent string
}

結構體可以理解為“類”,在golang語言當中是不存在類這種概念的,你就理解為類吧!
直接看程式碼,都在註釋裡面寫著呢

本作品採用《CC 協議》,轉載必須註明作者和本文連結

胡軍

相關文章