结束了概率论,我们数据之旅的下一站是统计。这一篇,是统计的一个小介绍。 统计是研究数据的学科。它包括描述数据,推测群体信息,判断假设的真伪。统计是一门实用学科。人们利用统计,寻找下一个NBA巨星,推测
第一节 Beego简介 beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado
“Go coding in go way”,中文含义就是用“Go语言编程思维去写Go代码”。 这里要和大家交流的内容都是基于Go诞生七年多以来我个人对Go的设计者、Go team以及Go主流社区的观点和代码行为的整理、分析和总结。 由于Go语言上手容易,在转Go的初期大家很快就掌握了Go的语法。 Go语言的价值观的形成我觉得至少有三点因素 1、语言设计者&Unix文化 Go语言价值观形成是与Go的初期设计者不无关系的,可以说Go最初设计者主导了Go语言价值观的形成! 无论是Go语言设计还是Go语言使用,都受到上述价值观的影响。接下来我们逐个来看一下Go语言价值观主导下的Go语言编程思维,并看看每种编程思维在语言设计、标准库实现以及主流Go开源项目中的应用体现。
安装 在mac上,用brew安装很方便: brew install go 2. 查看环境 brew安装的好处是安装完还会配好环境变量,可以查看: go env 3. 运行 查看下效果: go run demo.go 5. 编译 生成二进制程序: go build demo.go 6. 交叉编译 生成跨平台程序: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH =amd64 go build main.go CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go 7. 总结 go的理念就是简单、简洁、高效,连IDE也只需普通的文本编辑器也可以胜任,看上述的短短内容就已经完成安装、demo开发和发布的功能,有兴趣的就来尝试一下吧。
这些基本功能单元的累加就构成了Go应用,因此Go应用的本质就是一组Go包的集合。Go包还是编译时的最小单位。也就是说,Go编译器编译代码时会以包为单位进行编译,而不是以文件为单位。 Go包之间不能存在循环依赖,由于无环,包可以被单独编译,也可以并行编译;已编译的Go包的目标文件中记录了其所依赖包的导出符号信息。Go编译器在读取该目标文件时不需进一步读取其依赖包的目标文件。 在Go与C语言互操作(Interoperability)方面,Go更是提供了强大的支持。尤其是在Go中使用C,你甚至可以直接在Go源文件中编写C代码。 在如下一些场景中,可能会涉及到Go与C的互操作:1、提升局部代码性能时,用C替换一些Go代码。C之于Go,好比汇编之于C。2、嫌Go内存GC性能不足,自己手动管理应用内存。 testcontainers-go是一个Go语言开源项目,专门用于简化创建和清理基于容器的依赖项,常用于Go项目的单元测试、自动化集成或冒烟测试中。
最近发现技术交流群里很多人在询问 go get 墙外包失败的问题,大家给了很多解决方案: 从 Github 的代码库 clone 设置 GOPROXY 环境变量配置代理, 例如:GOPROXY=https ://goproxy.io 配置命令行代理,https_proxy 环境变量 使用 go mod replace 使用 Gopm 类似的工具 …… Go 的社区很活跃,国内 gopher 对 Go 的热情不会因为墙的存在而减少 上面的方法都是可行的,但是总有一些不尽人意,社区也一直在找更好的方法,我一直使用自动代理的方式获取墙外的包,可以支持所有 Go 原生拉取包操作,比如 go get、go mod、dep、godep、glide go get 自动代理的环境,以后需要访问外国网站操作的指令运行时加 proxy 就可以了,该方法并不只适用于 go get,任何需要命令行代理都可以使用。 前期我使用 go 的时候遇到下载不了的包时,就会在 go get 前加上 proxy 指令,但是我发现拉取 Github 包的效率非常低,本身国内现在访问 Github 已经很快了。
upgrade go 123 brew updatebrew install gobrew upgrade go 下载镜像: ? 安装完成之后的目录: Shell cd /usr/local/go/bin 1 cd /usr/local/go/bin 查看系统 go 的信息: ? Shell which go cd /usr/local/bin rm go gofmt sudo ln -s /usr/local/go/bin/go go sudo ln -s /usr/local /go/bin/gofmt gofmt 12345678 which go cd /usr/local/bin rm go gofmt sudo ln -s /usr/local/go/bin/go gosudo ln -s /usr/local/go/bin/gofmt gofmt 喜欢(0) 打赏
使用锁,保证变量并发的正确性;由于没有接触过实际的工程场景,因此进行了简短的调研,下面是一些相关材料的记录; 深入Go并发编程研讨课:https://github.com/smallnest/dive-to-gosync-workshop https://golang.org/src/sync/map.go sync.map https://blog.csdn.net/a348752377/article/details/104972194
kubernetes的客户端SDK,可以在集群外操作k8s链接地址:https://kubernetes.io/docs/reference/using-api/client-libraries/前提环境:1.安装go 开发环境2.获取go-client测试本示例通过展示操作namespace 来实现client-go与集群交互package mainimport ( "flag" "fmt" apiv1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes " "k8s.io/client-go/tools/clientcmd")func main() { // 配置 k8s 集群外 kubeconfig 配置文件 var kubeconfig build main.go会生成一个main的二进制文件图片执行二进制文件也可以操作集群图片
Hi,我是行舟,今天和大家一起学习Go语言的函数。 函数是Go语言中的一等公民,既可以单独定义,也可以作为参数传递。 Go语言中函数和方法不是一个概念,方法是属于结构体的。 传入参数是一个或者多个,返回值也是一个或者多个(这一点和别的语言不太一样,Go语言支持多返回值)。 在Go语言中,传入参数和返回参数完全相同的函数是同一类函数。 Go语言中的类型(type)也是非常重要的概念,我们后续单独写文章介绍,当前只需要记住判断两个函数是否同类型的标准就可以了。 返回值 Go语言中的函数可以有多个返回值,同时我们也可以对返回值进行命名。 Go语言中函数的最后一个形参类型前加...代表不限定参数个数。
module简介 在 go1.12,go发布了官方的包管理工具 Go Module 使用module 生成go.mod 新建一个文件夹作为项目目录,执行 go mod init 模块名称 使用mod初始化项目 ,生成项目依赖管理文件go.mod 这个文件也可以手动创建,无伤大雅 初始化后的go.mod文件内容如下 module test go 1.14 添加依赖 通过在go.mod中,添加require语句 github.com/99designs/gqlgen master require直接通过github地址和版本号(tag)来下载对应依赖 下载依赖 执行下面语句,自动将依赖安装到本地缓存(GOPATH) go mod download 编译运行 在项目目录创建主类源代码,接下来就可以执行编译运行命令了,比如是main.go go build main.go . /main.exe 清除多余依赖 go mod tidy 会修改go.mod,删除掉没有用的依赖 修改仓库代理 go env -w GOPROXY=https://goproxy.cn,direct
项目中使用到Go,两天看文档,一周出产品,第一次体验Go来开发,虽然写起代码很舒服,但是遇到xml转换是真的麻烦,没有php开发快啊,哈哈。不过Go是真的值得学习。先看下xml转结构体。
安装好之后我们在E:\Z_Enviroment\Go 下可以看到安装好的go文件。 配置全局环境变量,在path中加入E:\Z_Enviroment\Go\bin 3、在控制台窗口输入“go version”可查看Go版本,检测是否安装成功。 检查是否安装成功 go version C:\Users\1>go version go version go1.21.1 windows/amd64 4、配置环境变量。 如果是安装包安装的,系统环境变量自动配置的,如果压缩包安装,需要在PATH配置Go的命令。 打开控制台,输入命令go env查看是否配置成功。 ok,到此,Go安装完成。 } 当前目录下执行:go run hello.go 好啦,准备工作都做完毕后,我们就可以开始正式学习Go语言啦!
一、Go 语言 Go 语言概览 Go(Golang) 是由 Google 开源的、静态、强类型的编程语言,Go 语言最初的设计目的是用来替代 C++。 Go 语言在微服务上应用广泛,有许多开发的基于 Go 语言的 RPC 框架,如 kit、go-micro、kratos等;Go 语言还应用于中间件,etcd、influxdb、nsq 等都是基于 Go 二、第一个 Go 程序 Go Hello World makedir go-file cd go-file vim alpha.go Go 程序的第一行是 package main,要在第一行声明所在的包 运行 Go Hello World 在 Go 程序同级目录下执行 go run filename.go 也可以通过 go build 命令将程序编译成可执行的二进制文件 执行编译后的二进制文件 创建项目的两种方式 第一种方式是创建文件夹 go-basic, 进入文件夹执行 init 命令 // 在 go 项目目录中执行 go mod init go-basic 命令执行完会多出一个 go.mod
Go是一门支持模块化开发的语言,它提供了一种包管理机制来方便我们管理和复用代码。在开发过程中,我们经常需要清理一些临时文件或编译生成的文件,这时就需要用到go clean命令。 go clean命令go clean命令用于清理Go项目中生成的可执行文件、静态库和其他编译生成的临时文件。使用go clean命令可以帮助我们释放磁盘空间,并保持项目目录的整洁。 以下是go clean命令的一些示例:清理当前目录下的可执行文件和静态库go clean -i上述命令将当前目录下的可执行文件和静态库从$GOPATH/bin和$GOPATH/pkg目录中移除。 清理当前目录下的所有文件go clean -r上述命令将当前目录下的所有文件和子目录中的所有文件从$GOPATH/bin、$GOPATH/pkg和$GOPATH/src目录中移除。 打印当前目录下将要被清理的文件列表go clean -n上述命令将打印当前目录下将要被清理的文件列表,但不实际执行清理操作。
首先,https://go.dev 是该语言的主页。 下面是首选的入门资源: 从 https://go.dev/doc/install 下载 Go 二进制文件(go 命令和其他相关工具)。 参考 Go 官方文档: https://go.dev/doc/ 查看所有 Go 软件包: https://pkg.go.dev/ 访问 Go Playground: https://go.dev/play 6.编译并运行 Go 程序 本部分接着上一章节的入门程序介绍,解释如何编译并且运行go程序 go run hello.go go run 工具首先编译,然后运行指定的程序。 我们可以使用 go build 创建二进制文件: go build hello.go 个人电脑上执行的结果如下: PS E:\adongstack\go\hello> go build . 7.工作空间 Go有一个特别之处就是我们所说的工作空间。 工作区是 Go 的 "大本营"。 默认情况下,Go 会选择 $ HOME/ go路径,因此你会在主目录中看到一个 go 文件夹。
/local/go目录rm -rf /usr/local/go && tar -C /usr/local -xzf go1.16.9.linux-amd64.tar.gzexport GO111MODULE ,到这里就截止了,下面是腾讯云go sdk的配置。 https://github.com/TencentCloud/tencentcloud-sdk-go如果是安装腾讯云 go sdk 的话,继续走完。 /tencentcloud-sdk-go.git ,go get 比git clone快)源码路径:/root/go/pkg/mod/github.com/tencentcloud/tencentcloud-sdk-go @v1.0.154/examples (sdk版本号以你自己的为准)xxx.go的代码从哪里来,api explorer上自动生成编译运行:go build xxx.go.
Go编程语言提供称为数组的数据结构,其可存储相同类型的元素的一个固定大小的连续集合。数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合。 声明数组 要声明在Go语言数组,程序员指定元素的类型以及如下的数组所需元件的数目: var variable_name [SIZE] variable_type 这就是所谓的一维数组。 初始化数组 你可以用一个Go初始化数组一个或者使用单一的声明如下: var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0} 括号之间的数{}的值不能比声明方括号 = 104 Element[5] = 105 Element[6] = 106 Element[7] = 107 Element[8] = 108 Element[9] = 109 数组是很重要的在Go 有下列关系到数组几个重要的概念Go程序员是应该清楚的: 概念 描述 多维数组 Go支持多维数组。
package main import "fmt" func main() { fmt.Println(dg01(5)) fmt.Println(dg02(5)) } func dg01(n int) (sum int) { if n<1{ return 0 } sum = dg01(n-1)+n return }
” Go系列: Go(一)基础入门 Go(二)结构体 Go(三)Go配置文件 Go(四)Redis操作 熟悉使用SpringBoot的同学,再去使用Go之后,就会发现SpringBoot的配置文件是真的很方便 而在Go,他却不支持这样的做法,那么,我们只能自己实现类似于SpringBoot配置文件的做法了。 前提:引入依赖 go get gopkg.in/yaml.v2 需要做的就是将配置文件中的信息读取出来,并且绑定到相应的结构体当中。 /article/details/119995581 [3] Go(三)Go配置文件: https://blog.csdn.net/qq_41929184/article/details/120078698 [4] Go(四)Redis操作: https://blog.csdn.net/qq_41929184/article/details/120074654