golang 概念理解
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函数。


 
 
golang 概念理解的更多相关文章
- 大数据核心知识点:Hbase、Spark、Hive、MapReduce概念理解,特点及机制
		今天,上海尚学堂大数据培训班毕业的一位学生去参加易普软件公司面试,应聘的职位是大数据开发.面试官问了他10个问题,主要集中在Hbase.Spark.Hive和MapReduce上,基础概念.特点.应用 ... 
- SpringIOC的概念理解、构造器注入、setter注入、p命名空间注入、IOC容器介绍与比较
		1.IOC概念理解 IOC(Inversion of Control)即“控制反转”,不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象 ... 
- Kubernetes重要概念理解
		Kubernetes重要概念理解 kubernetes是目前最主流的容器编排工具,是下一代分布式架构的王者.2018年的kubernetes第一个版本1.10已经发布.下面整理一下,kubernete ... 
- SNF快速开发平台2019-角色、权限、账户的概念理解-非常全的理论讲解权限控制
		组织模型 资源模型 操作模型 谁能够执行哪些操作 执行资源的范围 资源概念资源就是想要的到的最终物质,我们可以给每一个资源定义一个权限,也可以给某一类资源定义一个权限 权限概念权限是对资源 ... 
- elasticsearch基本概念理解+elasticsearch 的shards unassigned处理方法  -- 最佳运维实践 - 集群规划
		1.es与MySQL的概念对比 2.概念理解 2.1 Index : 一个索引即是文档的集合 2.2 Document : 一个文档即是一个可被索引的基础单元信息,一条记录: 2.3 Replicas ... 
- fragment概念理解
		fragment概念理解知识,fragment概念理解图片 fragment概念理解内容,fragment概念理介绍,fragment概念理正文 Fragment是Android honeycomb ... 
- ubuntn系统下将文件拷贝到优盘中及挂载概念理解
		参考资料:http://jingyan.baidu.com/article/7082dc1c76f178e40a89bdd3.html: http://bbs.csdn.net/topics/3801 ... 
- Ceph 概念理解
		简介 Ceph是一个可靠地.自动重均衡.自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储.块设备存储和文件系统服务. 在虚拟化领域里,比较常用到的是Ceph的块设备存储, ... 
- JavaScript的作用域和块级作用域概念理解
		作用域 作用域永远都是任何一门编程语言中的重中之重,因为它控制着变量与参数的可见性与生命周期.说到这里我们需要理解两个概念:块级作用域与函数作用域. 函数作用域 这个应该好理解,函数作用域就是说定义在 ... 
- OpenStack中Keystone的基本概念理解
		原文http://www.kankanews.com/ICkengine/archives/10788.shtml Keystone简介 Keystone(OpenStack Identity Ser ... 
随机推荐
- 全能成熟稳定开源分布式存储Ceph破冰之旅-上
			@ 目录 概述 定义 传统存储方式及问题 优势 生产遇到问题 架构 总体架构 组成部分 CRUSH算法 数据读写过程 CLUSTER MAP 部署 部署建议 部署版本 部署方式 Cephadm部署 前 ... 
- Java 将Excel转为UOS
			以.uos为后缀的文件,表示Uniform Office Spreadsheet文件,是一种国产的办公文件格式,该格式以统一办公格式(UOF)创建,使用XML和压缩保存电子表格.既有的Excel表格文 ... 
- 读时加写锁,写时加读锁,Eureka可真的会玩
			大家好,我是三友~~ 在对于读写锁的认识当中,我们都认为读时加读锁,写时加写锁来保证读写和写写互斥,从而达到读写安全的目的.但是就在我翻Eureka源码的时候,发现Eureka在使用读写锁时竟然是在读 ... 
- Apache开启目录浏览功能的正确姿势
			部分代码是抄的网友的,哪儿抄的忘了,我是自己修改了点,并非我本人原创,觉得侵权联系我,立马删 在宝塔面板中,打开网站的设置,在配置文件那里添加如下内容 Directory "文件绝对路径&q ... 
- 分布式安装部署MinIO
			官方文档地址:http://docs.minio.org.cn/docs/master/distributed-minio-quickstart-guide 前提条件:分布式Minio至少需要4个硬盘 ... 
- alertmanager配置文件详解
			global: smtp_smarthost: 'localhost:25' smtp_from: 'alertmanager@example.org' #用于邮件通知的P发件人 route: #每个 ... 
- docker的cmd命令详解-前后台理解
			CMD 指令的格式和 RUN 相似,也是两种格式: shell 格式:CMD <命令> exec 格式:CMD ["可执行文件", "参数1", & ... 
- Java SE 19 虚拟线程
			Java SE 19 虚拟线程 作者:Grey 原文地址: 博客园:Java SE 19 虚拟线程 CSDN:Java SE 19 虚拟线程 说明 虚拟线程(Virtual Threads)是在Pro ... 
- C++ 自学笔记 new和delete(动态内存分配)
			动态内存分配 Dynamic memoey allocation C++使用new和delete 来申请和释放内存 new:先申请一个空间 int\Stash : 默认构造函数初始化对象 ~:析构函数 ... 
- [题解] LOJ 3300 洛谷 P6620 [省选联考 2020 A 卷] 组合数问题 数学,第二类斯特林数,下降幂
			题目 题目里要求的是: \[\sum_{k=0}^n f(k) \times X^k \times \binom nk \] 这里面出现了给定的多项式,还有组合数,这种题目的套路就是先把给定的普通多项 ... 
