https://www.youtube.com/watch?v=cN_DpYBzKso

https://blog.golang.org/gos-declaration-syntax

1.golang _下划线

import 下划线(如:import _ hello/imp)的作用:当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。这个时候就可以使用 import _ 引用该包。即使用【import _ 包路径】只是引用该包,仅仅是为了调用init()函数,所以无法通过包名来调用包中的其他函数。 import就是不直接使用包,只是执行一下这个包的init函数,把mysql的驱动注册到sql包里,然后程序里就可以使用sql包来访问mysql数据库了。

下划线在代码中 下划线意思是忽略这个变量.比如os.Open,返回值为*os.File,error普通写法是f,err := os.Open(xxxxxxx)如果此时不需要知道返回的错误值就可以用f, _ := os.Open(xxxxxx)如此则忽略了error变量也可能是占位符,意思是那个位置本应赋给某个值,但是咱们不需要这个值,所以就把该值赋给下划线,意思是丢掉不要,这样编译器可以更好的优化,任何类型的单个值都可以丢给下划线。这种情况是占位用的,方法返回两个结果,而你只想要一个结果,那另一个就用 _ 占位,而如果用变量的话,不使用,编译器是会报错的

2.golang struct 定义中json``解析说明 tag (声明) 重命名 作用,完成json的一些定制化操作

//在处理json格式字符串的时候,经常会看到声明struct结构的时候,属性的右侧还有小米点括起来的内容。`TAB键左上角的按键,~线同一个键盘`
type Student struct {
StudentId string `json:"sid"`
StudentName string `json:"sname"`
StudentClass string `json:"class"`
StudentTeacher string `json:"teacher"`
}
 //NO.1 with json struct tag
s := &Student{StudentId: "1", StudentName: "fengxm", StudentClass: "0903", StudentTeacher: "feng"}
jsonString, _ := json.Marshal(s)
fmt.Println(string(jsonString))
//{"sid":"1","sname":"fengxm","class":"0903","teacher":"feng"}

https://cizixs.com/2016/12/19/golang-json-guide/

3.golang 引入自定义包

要想引入自定义的包,需要自定义包的路径为GOPATH路径中。

近日在学习Golang的自定义包的创建方式,产生了一些经验,因此以这篇文章作为记录。

我们通过import语句将自定义包加入到我们项目main函数中,import语句后面的参数应该是文件夹的名称,和自定义包的package的名称或者自定义包里面的文件名称没有关系,例如文件的结构目录如下:

main.go的源码:

package main

import "fmt"
import "foo" func main() {
bar.Abc()
fmt.Print("This is main\n")
}

foo/test.go的源码:

package bar

import "fmt"

func Abc() {
fmt.Print("This is test print\n")
}

上面的代码是顺利通过编译的。我们可以总结以下几点:

(1)import语句使用的是文件夹的名称

上面例子中的import后面的参数对应的就是文件夹foo

(2)文件夹的名称和package的名称不一定相同

上面的例子中,文件夹是foo,而package名称是bar。

(3)调用自定义包使用package名称.函数名的方式

例如上面使用的bar.Abc()。

(4)自定义包的调用和文件名没有关系

例如上面的test.go文件,如果改成test_abc.go,程序也能正常编译。编译系统会自动查找foo文件夹下的所有文件,在其中寻找package bar,然后选择Abc函数。

 



最新文章

  1. Eclipse 项目中有红色感叹号,怎么办?
  2. C#知识体系(二)用案例来理解委托与事件
  3. iOS 8 WKWebView
  4. iOS:UIAlertController和UIAlertAction的详解
  5. hive操作语句使用详解
  6. 《JavaScript 闯关记》之单体内置对象
  7. Android 带password输入界面的Dialog实现机制
  8. 【原创】构建高性能ASP.NET站点 第五章—性能调优综述(后篇)
  9. eclipse中安装配置maven
  10. Android + OpenCV - Finding extreme points in contours
  11. js随机模块颜色
  12. 使用cl编译C/C++
  13. vue2 vue-rout
  14. openfalcon
  15. SSH深度历险(四) Maven初步学习
  16. php定时执行操作及ob_flush()与flush()的使用
  17. 在搭建tesseract-OCR环境中遇到问题和反省
  18. LwIP Application Developers Manual10---LwIP IPv4/IPv6 stacks
  19. 剑指Offer 2. 替换空格 (字符串)
  20. lenet-5

热门文章

  1. Kingbase V8R6集群安装部署案例---脚本在线一键缩容
  2. spark 写入数据到Geomesa(Hbase)
  3. OpenCV读写视频操作
  4. 使用 Docker 安装 Elastic Stack 8.0 并开始使用
  5. filebeat测试output连通性
  6. 4.maven私服nexus2迁移到nexus3
  7. 项目的依赖包(node_modules)删除
  8. R语言、02 案例2-1 Pelican商店、《商务与经济统计》案例题
  9. 制造业数字化转型,本土云ERP系统如何卡位?
  10. n维偏序 方法记录