展开

关键词

Go语言学习(七)|

Go 可以由多个文件组成,但是使用相同的 package <name> 这一行。 的函数命名方式: 公有函数的名字以大写字母开头; 私有函数的名字以小写字幕开头。 每个 Go 应用程序都包含一个名为 main 的中的 init 函数 init 函数是的一个特殊的函数,每个含有该函数的都会首先执行这个。 而不直接使用里面的函数,而是调用了该里面的 init 函数 自定义 以定义一个even为例: 自定义 (以 even 为例) 文件: even.go package even //开始自定义的 even.go 文件名可以随意 使用定义的 even 文件: myeven.go package main import ( "even" "fmt" ) func main() t.Fail() } } 注意在第一行使用了 package even,测试使用与被测试的使用相同的名字空间在目录中执行 go test 即可 ok even 0.001s

17220

Go 语言学习之

01 概念 在 Go 语言中,由一个或多个保存在同一目录的源码文件组成,名与目录名无关,但是通常大家习惯名和目录名保持一致。同一目录的源码文件必须使用相同的名。 的用途类似于其他语言的命名空间,可以限制成员的作用域和访问权限。无论是否在同一源码文件的成员,只要在同一个内,成员均可被访问。但是只有首字母大写的成员为导出成员,可以在外访问。 除了基于首字母大小写控制访问权限,在 Go 语言中,还可以使用内部包机制来控制访问权限,内部源码文件存放于目录的子目录,内部源码文件的导出成员仅能被其父目录下的访问。 02 声明 在 Go 语言中,每一个源码文件开头都必须使用关键字 package 进行包声明(定义名)。主要目的是限制内成员的作用域和访问权限,也是当前包被其他导入时的标识符。 名是导入路径的最后一段,所以不同导入路径的名可以相同。 03 导入 导入路径 Go 语言中的每一个都是通过唯一的字符串进行标识,称为导入路径。

26610
  • 广告
    关闭

    腾讯云精选爆品盛惠抢购

    腾讯云精选爆款云服务器限时体验20元起,还有更多热门云产品满足您的上云需求

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Go语言圣经--和文件-导入习题

    1.每个都有一个全局唯一的导入路径 2.按照惯例,一个的名字和的导入路径的最后一个字段相同 练习 2.2: 写一个通用的单位转换程序,用类似cf程序的方式从命令行读取参数,如果缺省的话则是从标准输入读取参数 1.创建目录mkdir /home/ubuntu/gobook/src/unitconv/ 2.目录下创建源文件unitconv.go 文件unitconv.go package unitconv f) } /* 类型的String方法 */ func (m Meter)String() string{ return fmt.Sprintf("%gm",m) } 主程序unit.go

    38430

    Go text模版和HTML模版【Go语言圣经笔记】

    这些功能是由text/template和html/template等模板提供的,它们提供了一个将变量值填充到一个文本或HTML格式的模板的机制。 每个actions都包含了一个用模板语言书写的表达式,一个action虽然简短但是可以输出复杂的打印值,模板语言包含通过选择结构体的成员、调用函数或方法、表达式控制流if-else语句和range循环语句 下面我们介绍html/template模板,它使用和text/template相同的API和模板语言,但是增加了一个将字符串自动转义特性,这可以避免输入字符串和HTML、JavaScript、CSS 注意,html/template已经自动将特殊字符转义,因此我们依然可以看到正确的字面值。 一如既往,如果想了解更多的信息,请自己查看文档: $ go doc text/template $ go doc html/template

    9510

    Go 语言操作 MySQL 之 SQLX

    、 SQLX 库 sqlx是 Go 的软件,它在出色的内置database/sql软件的基础上提供了一组扩展。 该库兼容sql原生,同时又提供了更为强大的、优雅的查询、插入函数。 安装 SQLX 库 go get github.com/jmoiron/sqlx 使用操作 连接数据库 // 初始化数据库 func initMySQL() (err error) { dsn := 数据表达及引用 在这里提前声明一个用户结构体 user,将 *sqlx.DB 作为一个全局变量使用,当然也要提前引用 MySQL 的驱动,如下设计: import ( "fmt" _ "github.com /go-sql-driver/mysql" "github.com/jmoiron/sqlx" ) var db *sqlx.DB type user struct { Id int

    88441

    Go语言基础之time详解

    那我们一起来看看Go中是如何操作时间叭! time.Now() time.Now()返回的是一个Time类型。 在Go中,时间推算有俩函数,一个是Add,一个是AddDate,分别是+小时和+天数。 时间格式化(time -> string) Go语言的时间格式化,有点逗,跟其他语言都不一样,没有%Y,%M之类的写法。 当前,同其语言一样,可以只格式化年-月-日等。 格式时间需要用到Format方法。 总结 到这终于结束了,关于Go时间的操作基本就上述这么多。 当然,这是自带的的功能有这么多,对于平常使用基本够用。

    18110

    Go语言sync的应用详解

    Go语言的sync提供了常见的并发编程同步原语,上一期转载的文章《Golang 并发编程之同步原语》中也详述了 Mutex、RWMutex、WaitGroup、Once 和 Cond 这些同步原语的实现原理 今天的文章里让我们回到应用层,聚焦sync里这些同步原语的应用场景,同时也会介绍sync中的Pool和Map的应用场景和使用方法。话不多说,让我们开始吧。 sync.Mutex sync.Mutex可能是sync中使用最广泛的原语。 (sync的所有原语都一样)。如果结构体具有同步原语字段,则必须通过指针传递它。 sync.Map sync.Map是一个并发版本的Go语言的map,我们可以: 使用Store(interface {},interface {})添加元素。

    27021

    Go语言圣经-文本和HTML模板习题

    Go语言圣经-文本和HTML模板 练习 4.14: 创建一个web服务器,查询一次GitHub,然后生成BUG报告、里程碑和对应的用户信息。 issueList.Execute(w, result) package main import ( "net/http" //"fmt" "github" "html

    50420

    Go语言圣经--和文件-初始化习题

    1.解决级变量的依赖顺序,然后按照级变量声明出现的顺序依次初始化 2.中含有多个.go源文件,它们将按照发给编译器的顺序进行初始化 3.init初始化函数,在每个文件中的init初始化函数,在程序开始执行时按照它们声明的顺序被自动调用 4.每个包在解决依赖的前提下,以导入声明的顺序初始化,每个只会被初始化一次,在main函数执行之前,所有依赖的都已经完成初始化工作了 5.一个数字中含二进制1bit的个数算法,统计出一个int型数值中比特值为

    36530

    浅谈Go语言中闭的使用

    (Closure),又称词法闭(Lexical Closure)或函数闭(function closures),是引用了自由变量的函数。 还有一个好处就是函数调用结束时就会自动失效,而闭的好处就是可以让这些变量始终保持在内存中,不会随着函数的调用而消失。 Go语言中不允许函数嵌套定义,但是可以用匿名函数来实现嵌套。 在这里就得知道,在Go语言中,函数也是一种类型,这意味着可以把函数当成一个值来传递和返回。函数既可以作为一种返回类型又可以作为其他函数的参数。所以,这样很容易使用函数类型来实现闭。 现在演示Go中一个简单的闭 package main import ( "fmt" ) func main() { var x int = 1 a := func() func() { var y int 这时候通常嵌套的函数被独立出来当成父函数的一个返回值或者赋值给一个变量,这也就可以看出go语言把函数当成一种类型的好处了。

    1.6K80

    Go 语言 time 常用用法笔记

    Go 的时间操作基本上都用 time ,比 C 的 time 函数和 timeval 等 struct 好用多了。不过 time 还是有不少用法和其他语言不同的,所以有必要写个笔记记录一下。 在 Go 中,表示时区的类型是 type Location struct{...},代码中使用 *time.Location 对象。 对于不严格的场景而言,可以获取服务器所处的时区。 :10:23.437" 通过已知格式的字符串解析时间的函数为: t, err := time.ParseInLocation("2006-01-02 15:04:05", s, loc) 略微了解过 Go time 的人都知道,Go 时间格式化采用的并不是传统的 YYYY-MM-DD hh:mm:ss 格式。 原文标题:Go 语言 time 常用用法笔记 发布日期:2017-07-03 原文链接:https://cloud.tencent.com/developer/article/1456484。

    1.8K60

    Go unsafe底层编程细节详解 【Go语言圣经笔记】

    在本章,我们将展示如何使用unsafe来摆脱Go语言规则带来的限制,讲述如何创建C语言函数库的绑定,以及如何进行系统调用。 使用unsafe的同时也放弃了Go语言保证与未来版本的兼容性的承诺,因为它必然会有意无意中使用很多非公开的实现细节,而这些实现的细节在未来的Go语言中很可能会被改变。 如果是比较小的C语言库,我们完全可以用纯Go语言重新实现一遍。如果我们对性能也没有特殊要求的话,我们还可以用os/exec的方法将C编写的应用程序作为一个子进程运行。 用于调用cgo下面有具体解释 在预处理过程中,cgo工具生成一个临时用于包含所有在Go语言中访问的C语言的函数或类型。 请远离reflect的unsafe,除非你确实需要它们。 最后,用Go快乐地编程。我们希望你能像我们一样喜欢Go语言

    13510

    Go语言的fmt中文教程

    Fmt import "fmt" 简介 ▾ Package fmt包含有格式化I/O函数,类似于C语言的printf和scanf。格式字符串的规则来源于C但更简单一些。 when printing structs, the plus flag (%+v) adds field names %#v 值的Go语法表示。 %T 值的类型的Go语法表示。 type Formatter type GoStringer type ScanState type Scanner type State type Stringer Package files doc.go format.go print.go scan.go func Errorf func Errorf(format string, a ...interface{}) error Errorf根据格式字符串和参数表生成一个字符串 GoStringer type GoStringer interface { GoString() string } GoStringer接口由任意包含GoString方法的数据实现,这个方法定义了数据的Go

    64170

    go语言pathfilepath之Walk源码解析

    go语言的path/filepath包包提供了很多兼容各个操作系统的文件路径实用操作方法,今天只来看看Walk方法: Walk(root stirng, walkFn WalkFunc) error return err } } } } return nil } 实例演练: 将一个目录或者文件压缩为zip

    49420

    Go语言的fmt中文教程

    Fmt import "fmt" 简介 ▾ Package fmt包含有格式化I/O函数,类似于C语言的printf和scanf。格式字符串的规则来源于C但更简单一些。 when printing structs, the plus flag (%+v) adds field names %#v 值的Go语法表示。 %T 值的类型的Go语法表示。 type Formatter type GoStringer type ScanState type Scanner type State type Stringer Package files doc.go format.go print.go scan.go func Errorf func Errorf(format string, a ...interface{}) error Errorf根据格式字符串和参数表生成一个字符串 GoStringer type GoStringer interface { GoString() string } GoStringer接口由任意包含GoString方法的数据实现,这个方法定义了数据的Go

    47260

    夯实基础:Go 语言依赖管理

    温馨提示:本文内容较为基础,适合刚入门或者想要了解 Go 语言的同学。 前文回顾 在前面系列文章中,我们对 Go 的基础语法和一些简单的特性进行介绍,如数据类型、容器等。 Go 是一门静态强类型语言,在程序编译的过程中会把变量的反射信息如字段类型、类型信息等写入可执行文件中。 本系列文章,我将会进一步加深对 Go 语言的讲解,更一步介绍 Go 中的包管理、反射和并发等高级特性,本文将会介绍 Go 依赖管理相关的应用实践。 本文我们将初步了解 Go 的包管理。 包管理 与大多数的编程语言一致,Go 中同样存在的定义,我们可以通过 package 关键字定义一个。 小结 本文主要介绍了 Go 语言依赖管理。与其他语言一样,Go 语言通过 package 关键字定义一个

    18520

    Go 语言标识符、名规范

    在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。 go语言中的变量,函数,以及名等都属于标志符的一种。 的命名规则 (1)名尽可能与它所在的目录名保持一致,不要与标准库进行冲突。 (2)带有main函数的必须将其package定义为main,这样才能用go run去运行文件,go build才能生成可执行文件。 (3)变量名、函数名、常量名命名采用驼峰法 (4)变量名、函数名、常量名首字母大写,可以被其他访问。首字母小写则只能在本中使用。

    5820

    夯实基础:Go 语言依赖管理(二)

    前文回顾 Go 是一门静态强类型语言,与其他语言一样,Go 语言通过 package 关键字定义一个。前面一篇文章主要介绍了 Go 语言依赖管理。 我们通过 package 关键字定义 main ,在 Go 中规定主函数 #main 必须位于 main 包下。 Go 的代码复用很大程度依赖于基础上,而包管理很大程度依赖于 GOPATH。 在不依赖其他第三方工具的前提下,可以使用 go get 命令远程拉取新的依赖。 小结 本文主要介绍了 Go 语言依赖管理 GOPATH 和 Go Module 。GOPATH 工作目录是 Go 项目的开发空间,它是一个目录结构,一般由三个子目录组成。 下一篇文章将会开始介绍 Go 语言的反射相关内容,这也是用好 Go 语言所必须掌握的知识点。

    17110

    go语言的sql原理与用法分析

    本文实例讲述了go语言的sql原理与用法。分享给大家供大家参考,具体如下: go的sql是在pkg/database中,里面的两个sql和sql/driver可以一起看。 建议看这个两个之前可以先看看sql文件夹下的doc.txt。这个文档说了几点比较重要的: 1 这两个是真正Go风格的。 2 这使用这两个就不需要关于并发处理了,也不需要维护自己的数据库连接池了,一旦建立了一个连接,这个连接是可以在各个goroutine之间共用的。 sql中的这些接口。 它是个接口,其实没有什么特殊的用处,如果sql中的所有Result都换成driver.Result也是行的,估计是作者希望返回值不要引用到其他包去,就使用这种方法。

    77760

    Go 语言使用 net 实现 Socket 网络编程

    nil { fmt.Printf("accept failed, err:%v\n", err) continue } // 启动一个单独的 goroutine 去处理连接 go err) return } fmt.Printf("recv:%v addr:%v count:%v\n", string(data[:n]), remoteAddr, n) } 参考文章 Go 语言基础之网络编程 – 李文周的个人博客 简单理解Socket – 谦行 – 博客园 TCP/IP协议 – 百度百科 详解TCP连接的“三次握手”与“四次挥手”(下)

    56350

    相关产品

    • 云托管 CloudBase Run

      云托管 CloudBase Run

      云托管是云开发提供的新一代云原生应用引擎(App Engine 2.0),支持托管用任意语言和框架编写的容器化应用。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券