本文主要介绍go语言静态库的编译和使用方法,以windows平台为例,linux平台步骤一样,具体环境如下:
```
echo %GOPATH%
E:\share\git\go_practice\
echo %GOROOT%
C:\Go\
继续阅读 »
刚开始学习go语言的时候,看代码中某个类型实现了Error()方法,然后就可以将该类型赋值给error类型。当时还没学习接口,不懂为什么可以这样赋值。学习接口以后,才明白怎么回事。查看go源码,发现内置类型error其实是一个接口类型,并实现了Error()方法,如下:
继续阅读 »
go提供了一个list包,类似python的list,可以存储任意类型的数据,并提供了相应的API,如下:
go
type Element
func (e *Element) Next() *Element
func (e *Element) Prev() *Element
type List
func New() *List
func (l *List) Back() *Element
func (l *List) Front() *Element
func (l *List) Init() *List
func (l *List) InsertAfter(v interf
继续阅读 »
1 基础知识
go语言有以下特点:
编译型语言,编译速度快
静态类型语言,拥有动态类型语言特点
类c语法,简单易学
支持gc
语言层面支持并发
跨平台编译
2 著名的go项目:
继续阅读 »
开发中常需要获取机器的mac地址或者ip,本文通过go获取机器上所有mac地址和ip,详细代码如下:
```go
package main
import (
"fmt"
"net"
)
func getMacAddrs() (macAddrs []string) {
netInterfaces, err := net.Interfaces()
if err != nil {
fmt.Printf("fail to get net interfaces: %v", err)
return macAddrs
}
继续阅读 »
最近几天在读Kubernetes的代码,涉及到不少Go语言中需要注意的点;这里记录一下对这些功能的理解:
函数实现
在类定义方面,Go语言通过结构体+函数的形式提供了类的实现机制;比较像早期的g++的实现方式。以下面这个类定义为例:
继续阅读 »
Go 语言也提供了接口类型,使得我们可以面向接口编程,将实现和接口分离。在我看来,软件的抽象之美也应该以此来表达,和 Java 语言不同的是 Go 并不是那么 “强制”,它使用了一种 鸭子类型 的方式让动态类型成为可能。
继续阅读 »
go提供了一种叫map的数据结构,可以翻译成映射,对应于其他语言的字典、哈希表。借助map,可以定义一个键和值,然后可以从map中获取、设置和删除这个值,尤其适合数据查找的场景。但是map的使用有一定的限制,如果是在单个协程中读写map,那么不会存在什么问题,如果是多个协程并发访问一个map,有可能会导致程序退出,并打印下面错误信息:
继续阅读 »
|Set | Java | Python | Go |
|:--------|:-----------------------|:----------|:----------|
|type | Set, HashSet, etc | set | N/A |
|package | import Set | primitive | N/A |
|mutable | Y | Y | N/A |
继续阅读 »
本文主要就go语言的学习发展,总结自己在学习的道路上遇到的问题,同时对学习资源进行归纳总结,以方便共同学习
概述
近年来语言的飞速发展,的确给大家带来一种应接不暇的现象,究竟如何取舍,的确是让人挺纠结的。自从Google宣布,kotlin 作为android开发的首选语言,java的地位能否像以前一样不得而知,但是基于jvm的语言(Groovy,Kotlin)的发展也让大家看到每种语言在处理特定问题的优势;gradle基于groovy,开发新一代的构建工具,个人觉得你极大提高了生产力,在持续集成领域,无疑增加了一剂猛药。可以看到groovy在领域特定语言上的优势。
继续阅读 »