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 协议》,转载必须注明作者和本文链接
胡军