学习Go语言的一些感受,不一定准确。假如发生战争,JAVA一般都是充当航母战斗群的角色。
一旦出动,就是护卫舰、巡洋舰、航母舰载机、预警机、电子战飞机、潜艇等等
浩浩荡荡,杀将过去。
(JVM,数十个JAR包,Tomcat中间件,SSH框架,各种配置文件...天生就是重量级的,专为大规模作战)而GO语言更像F35战斗轰炸机
单枪匹马,悄无声息,投下炸弹然后走人。
专属轰炸机,空战也会一点点.
实在搞不定,就叫它大哥F22。
(GO是编译型语言,不需要依赖...
golang复合类型包括:结构体、数组、切片、Maps。1、数组数组golang中的数组与C语言中的数组差异很大,倒更类似Pascal中的数组。 (Slice,下个话题,有些像C语言中的数组)复制代码 代码如下:
var ar [3]int声明ar为一个拥有三个整型数的数组,所有元素初始化为0。大小是类型的一个组成部分。内置的函数len可以用于获取数组大小:复制代码 代码如下:
len(ar) = 3数组是值类型golang中的数组是值,而非C语言中的隐式指针。你可以获得...
本文实例讲述了go语言通过反射获取和设置结构体字段值的方法。分享给大家供大家参考。具体实现方法如下:复制代码 代码如下:type MyStruct struct {
N int
}
n := MyStruct{ 1 }
// get
immutable := reflect.ValueOf(n)
val := immutable.FieldByName("N").Int()
fmt.Printf("N=%d\n", val) // prints 1// set
mutable := reflect.ValueOf(&n).Elem()
mutable.FieldByName("N").SetInt(7)
fmt.Printf("N=%d\n", n.N) // p...
获取文件信息FileInfo接口在os包中有一个FileInfo接口它包含了一个文件的基本信息,如下// A FileInfo describes a file and is returned by Stat and Lstat.
type FileInfo interface {Name() string // base name of the fileSize() int64 // length in bytes for regular files; system-dependent for othersMode() FileMode // file mode bitsModTime() time.Time // modification timeIsDir() bool //...
Go语言中的指针不能进行偏移和运算,是安全指针。
在了解GO语言中的指针前,首先需要知道三个概念:指针地址、指针类型和指针取值。1.Go语言中的指针任何数据载入内存后,在内存中都有对应的地址,这就是指针。
为了保存一个数据在内存中的地址,需要指针变量。
比如"好好学习,天天向上"这个字符串写入程序中,程序一启动这句话就加载到内存(假设内存地址为0x123456),在程序中,把该字符串赋值给变量A,把该字符串的内存地址赋值...
在Go中函数也是一种变量,我们可以通过type来定义它,它的类型就是所有拥有相同的参数,相同的返回值的一种类型,函数当做值和类型在我们写一些通用接口的时候非常有用通过下面这个例子我们可以看到testInt类型是一个函数类型,
然后两个filter函数的参数和返回值与testInt类型一样的
但是我们可以实现很多种逻辑,这样使得我们的程序可以变得非常的灵活。package mainimport ("fmt"
)//声明了一个函数类型
type testInt func(int)...
可以用作一些资源的释放。1.在一个函数内的defer执行顺序是先写的后执行,后写的先执行(遵循栈结构)func DeferTest1(){defer fmt.Println("我是 defer1")defer fmt.Println("我是 defer2")fmt.Println("我是DeferTest1")fmt.Println("我是DeferTest2")
}
结果:我是DeferTest1
我是DeferTest2
我是 defer2
我是 defer1 2.defer 执行语句的值和定义defer语句函数的关系func DeferTest2(){i:= 0defer fmt.Printf("defer i=%d\t",...
一、新建项目 选择File-New-Project 创建awesomeProject并在下面创建main.go 二、在运行按钮旁边 点击Edit Configurations 选择如下配置: 三、运行输出结果 点击run 发现报错“go: cannot find main module; see ‘go help modules‘” 百度了许久是因为配置了代理缺少go.mod文件。 解决方案:在项目根目录下dos运行:go mod init 点击运行!Ok成功输出“hello word!” 原文:https:/...
soduku.go复制代码 代码如下:
package main
import (
"fmt"
)
type node []int
var sudokuMay [9][9]node
var Sudoku = [9][9]int{
{0, 0, 0, 0, 0, 0, 8, 0, 0},
{0, 8, 2, 4, 0, 0, 0, 0, 0},
{1, 9, 0, 0, 6, 3, 0, 0, 0},
{0, 5, 0, 0, 8, 0, 7, 0, 0},
{6, 7, 8, 2, 0, 9, 1, 4, 3},
{0, 0, 3, 0, 4, 0, 0, 8, 0},
{0, 0, 0, 6, 2, 0, 0, 9, 4},
{0, 0, 0, 0, 0, 5, 6, 1, 0},
{0, 0...
什么是单元测试相信我们做程序员的,对单元测试都不陌生。单元测试一般是用来测试我们的代码逻辑有没有问题,有没有按照我们期望的运行,以保证代码质量。大多数的单元测试,都是对某一个函数方法进行测试,以尽可能的保证没有问题或者问题可被我们预知。为了达到这个目的,我们可以使用各种手段、逻辑,模拟不同的场景进行测试。这里我们在package main里定义一个函数Add,求两个数之和的函数,然后我们使用单元测试进行求和逻辑测...
目录1、for range2、defer与闭包3、map内存溢出4、协程泄漏5、http手动关闭记录一下日常中遇到的几个坑,加深一下印象。1、for range这个是比较常见的问题了,我自己也整理一下:func main() {l := []int{1,2,3}fmt.Printf("%p \n", &l)for _, v := range l {fmt.Printf("%p : %d \n", &v,v)}
}
输出结果0xc000092080
0xc00018a008 : 1
0xc00018a008 : 2
0xc00018a008 : 3
这边基本可以看出来了,v是一个临时分配出来的的内存,...
本文实例讲述了Go语言使用sort包对任意类型元素的集合进行排序的方法。分享给大家供大家参考。具体如下:使用sort包的函数进行排序时,集合需要实现sort.Inteface接口,该接口中有三个方法:复制代码 代码如下:// Len is the number of elements in the collection.
Len() int
// Less reports whether the element with
// index i should sort before the element with index j.
Less(i, j int) bool
// Swap swaps th...
运算符用于在程序运行时执行数学或逻辑运算。运算符Go 语言内置的运算符有:算术运算符关系运算符逻辑运算符位运算符赋值运算符算数运算符运算符描述+相加-相减*相乘/相除%求余注意: ++(自增)和--(自减)在Go语言中是单独的语句,并不是运算符。关系运算符运算符描述==检查两个值是否相等,如果相等返回 True 否则返回 False。!=检查两个值是否不相等,如果不相等返回 True 否则返回 False。>检查左边值是否大于右边值,如果是...
本文实例讲述了Go语言实现简单留言板的方法。分享给大家供大家参考。具体实现方法如下:复制代码 代码如下:package main
import (
// "fmt"
"io"
"log"
"net/http"
"text/template"
"time"
"database/sql"
"github.com/ziutek/mymysql/godrv"
)
// 留言结构
type Liuyan struct {
Id int
Name string
Content string
Time int
}
// 显示留言时间
func (l Liuyan) ShowT...
本文实例讲述了Go语言实现的web爬虫方法。分享给大家供大家参考。具体分析如下:这里使用 Go 的并发特性来并行执行 web 爬虫。
修改 Crawl 函数来并行的抓取 URLs,并且保证不重复。复制代码 代码如下:package main
import (
"fmt"
)
type Fetcher interface {
// Fetch 返回 URL 的 body 内容,并且将在这个页面上找到的 URL 放到一个 slice 中。
Fetch(url string) (body string, urls []string, err error)
}
/...