Golang(go语言)中map创建/赋值/读取

GoLangliuliangsong 发表了文章 • 0 个评论 • 140 次浏览 • 2016-12-10 22:53 • 来自相关话题

  go语言map是一种无序的键值对的集合。map最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。
 一、golang map声明、初始化、赋值、使用Println输出:package main
import "fmt"
func main() {
// 声明map
var m map[int]string
// 初始化map, 未初始化的map为nil map,不能赋值
m = make(map[int]string)
// 赋值
m[1] = "aaa"
m[2] = "bbb"
m[3] = "999"
// 输出
fmt.Println(m)
}运行结果:[root@aiezu.com ~]# go run test.go
map[1:aaa 2:bbb 3:999]  二、golang直接初始化创建map、然后赋值、使用for输出:package main
import "fmt"
func main() {
// 直接初始化创建
m := make( map[string]string )
// 赋值
m["site"] = "aiezu.com"
m["name"] = "爱E族"
m["test"] = "123456"

// for 输出
for key, val := range m {
fmt.Print(key, "\t", val, "\n")
}
}运行结果:[root@aiezu.com ~]# go run test.go
site aiezu.com
name 爱E族
test 123456  
三、go语言直接创建map并赋值,并使用for输出:package main
import "fmt"
func main() {
// 直接创建并赋值
m := map[string]string {
"name" : "爱e族",
"domain" : "aiezu.com",
}

for key, val := range m {
fmt.Print(key, "\t", val, "\n")
}
}
运行结果:[root@aiezu.com ~]# go run test.go
name 爱e族
domain aiezu.com

  查看全部
  go语言map是一种无序的键值对的集合。map最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。
 

一、golang map声明、初始化、赋值、使用Println输出:

package main
import "fmt"
func main() {
// 声明map
var m map[int]string
// 初始化map, 未初始化的map为nil map,不能赋值
m = make(map[int]string)
// 赋值
m[1] = "aaa"
m[2] = "bbb"
m[3] = "999"
// 输出
fmt.Println(m)
}
运行结果:
[root@aiezu.com ~]# go run test.go 
map[1:aaa 2:bbb 3:999]
  

二、golang直接初始化创建map、然后赋值、使用for输出:

package main
import "fmt"
func main() {
// 直接初始化创建
m := make( map[string]string )
// 赋值
m["site"] = "aiezu.com"
m["name"] = "爱E族"
m["test"] = "123456"

// for 输出
for key, val := range m {
fmt.Print(key, "\t", val, "\n")
}
}
运行结果:
[root@aiezu.com ~]# go run test.go 
site aiezu.com
name 爱E族
test 123456
  
三、go语言直接创建map并赋值,并使用for输出:
package main
import "fmt"
func main() {
// 直接创建并赋值
m := map[string]string {
"name" : "爱e族",
"domain" : "aiezu.com",
}

for key, val := range m {
fmt.Print(key, "\t", val, "\n")
}
}
运行结果:
[root@aiezu.com ~]# go run test.go 
name 爱e族
domain aiezu.com

 

Golang(go语言)上传图片和显示图片

GoLangliuliangsong 发表了文章 • 0 个评论 • 206 次浏览 • 2016-12-09 17:53 • 来自相关话题

  下面是一段简单的Go语言代码,可以用来监听端口,实现简单的http图片上传,和显示上传的图片,可供初学者参考:package main;
import (
"fmt"
"io"
"io/ioutil"
"os"
"path"
"net/http"
"errors"
"strings"
)

func main() {
http.HandleFunc("/upload/", uploadHandle) // 上传
http.HandleFunc("/uploaded/", showPicHandle) //显示图片
err := http.ListenAndServe(":80", nil)
fmt.Println(err)
}

// 上传图像接口
func uploadHandle (w http.ResponseWriter, req *http.Request) {
w.Header().Set("Content-Type", "text/html")

req.ParseForm()
if req.Method != "POST" {
w.Write([]byte(html))
} else {
// 接收图片
uploadFile, handle, err := req.FormFile("image")
errorHandle(err, w)

// 检查图片后缀
ext := strings.ToLower(path.Ext(handle.Filename))
if ext != ".jpg" && ext != ".png" {
errorHandle(errors.New("只支持jpg/png图片上传"), w);
return
//defer os.Exit(2)
}

// 保存图片
os.Mkdir("./uploaded/", 0777)
saveFile, err := os.OpenFile("./uploaded/" + handle.Filename, os.O_WRONLY|os.O_CREATE, 0666);
errorHandle(err, w)
io.Copy(saveFile, uploadFile);

defer uploadFile.Close()
defer saveFile.Close()
// 上传图片成功
w.Write([]byte("查看上传图片: <a target='_blank' href='/uploaded/" + handle.Filename + "'>" + handle.Filename + "</a>"));
}
}

// 显示图片接口
func showPicHandle( w http.ResponseWriter, req *http.Request ) {
file, err := os.Open("." + req.URL.Path)
errorHandle(err, w);

defer file.Close()
buff, err := ioutil.ReadAll(file)
errorHandle(err, w);
w.Write(buff)
}

// 统一错误输出接口
func errorHandle(err error, w http.ResponseWriter) {
if err != nil {
w.Write([]byte(err.Error()))
}
}

const html = `<html>
<head></head>
<body>
<form method="post" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="submit" />
</form>
</body>
</html>` 查看全部
  下面是一段简单的Go语言代码,可以用来监听端口,实现简单的http图片上传,和显示上传的图片,可供初学者参考:
package main;
import (
"fmt"
"io"
"io/ioutil"
"os"
"path"
"net/http"
"errors"
"strings"
)

func main() {
http.HandleFunc("/upload/", uploadHandle) // 上传
http.HandleFunc("/uploaded/", showPicHandle) //显示图片
err := http.ListenAndServe(":80", nil)
fmt.Println(err)
}

// 上传图像接口
func uploadHandle (w http.ResponseWriter, req *http.Request) {
w.Header().Set("Content-Type", "text/html")

req.ParseForm()
if req.Method != "POST" {
w.Write([]byte(html))
} else {
// 接收图片
uploadFile, handle, err := req.FormFile("image")
errorHandle(err, w)

// 检查图片后缀
ext := strings.ToLower(path.Ext(handle.Filename))
if ext != ".jpg" && ext != ".png" {
errorHandle(errors.New("只支持jpg/png图片上传"), w);
return
//defer os.Exit(2)
}

// 保存图片
os.Mkdir("./uploaded/", 0777)
saveFile, err := os.OpenFile("./uploaded/" + handle.Filename, os.O_WRONLY|os.O_CREATE, 0666);
errorHandle(err, w)
io.Copy(saveFile, uploadFile);

defer uploadFile.Close()
defer saveFile.Close()
// 上传图片成功
w.Write([]byte("查看上传图片: <a target='_blank' href='/uploaded/" + handle.Filename + "'>" + handle.Filename + "</a>"));
}
}

// 显示图片接口
func showPicHandle( w http.ResponseWriter, req *http.Request ) {
file, err := os.Open("." + req.URL.Path)
errorHandle(err, w);

defer file.Close()
buff, err := ioutil.ReadAll(file)
errorHandle(err, w);
w.Write(buff)
}

// 统一错误输出接口
func errorHandle(err error, w http.ResponseWriter) {
if err != nil {
w.Write([]byte(err.Error()))
}
}

const html = `<html>
<head></head>
<body>
<form method="post" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="submit" />
</form>
</body>
</html>`

Linux vim为Golang(go语言)添加语法高亮

GoLangliuliangsong 发表了文章 • 0 个评论 • 247 次浏览 • 2016-12-08 12:42 • 来自相关话题

  Go语言是谷歌2009发布的一款开源跨平台编程语言,目前vim默认还没有为golang提供语法高亮功能,要实现go语言vim下语法高亮,可以参考下面设置。  一、测试环境:  我的测试环境为RHEL7.1,本文适用与CentOS、Ubuntu、Fedora,同样也适用于其他大多数linux系统: [root@aiezu.com ~]# cat /etc/redhat-release
Derived from Red Hat Enterprise Linux 7.1 (Source)
[root@aiezu.com ~]# uname -a
Linux aiezu.com 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 二、为vim添加go语言用法高亮:  打开https://golang.org/dl/页面,在上面找到并下载“go1.3.3.src.tar.gz ”源码包,然后解压:wget https://storage.googleapis.com/golang/go1.3.3.src.tar.gz
tar -zxvf go1.3.3.src.tar.gz  然后将解压出来的“go/misc/vim/”目录下的syntax、ftplugin、indent、compiler、ftdetect五个文件夹复制到"/usr/share/vim/vim74/"目录下:cp -R go/misc/vim/syntax/ /usr/share/vim/vim74/
cp -R go/misc/vim/ftplugin/ /usr/share/vim/vim74/
cp -R go/misc/vim/indent/ /usr/share/vim/vim74/
cp -R go/misc/vim/compiler/ /usr/share/vim/vim74/
cp -R go/misc/vim/ftdetect/ /usr/share/vim/vim74/ 三、测试:  文件全部复制好后,创建一个后缀为".go"的文件,输入golang代码试试,看vim golang语法高亮是否生效,我的效果如下:



 四、附录:  可以在用户目录下,添加一个".vimrc"文件,在文件添加一些vim初始设置项,来设置是否现在行号、tab字符宽度、文本缩进等。".vimrc"文件每次使用vim命令时都会自动调用。运行"vim ~/.vimrc"命令,然后添加如下内容:syntax on
"set number " 显示行号
"set cursorline " 突出显示当前行
set tabstop=4 " Tab键的宽度

" 统一缩进为4
set softtabstop=4
set shiftwidth=4 查看全部

  Go语言是谷歌2009发布的一款开源跨平台编程语言,目前vim默认还没有为golang提供语法高亮功能,要实现go语言vim下语法高亮,可以参考下面设置。

  

一、测试环境:

  我的测试环境为RHEL7.1,本文适用与CentOS、Ubuntu、Fedora,同样也适用于其他大多数linux系统: 
[root@aiezu.com ~]# cat /etc/redhat-release 
Derived from Red Hat Enterprise Linux 7.1 (Source)
[root@aiezu.com ~]# uname -a
Linux aiezu.com 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
 

二、为vim添加go语言用法高亮:

  打开https://golang.org/dl/页面,在上面找到并下载“go1.3.3.src.tar.gz ”源码包,然后解压:
wget https://storage.googleapis.com/golang/go1.3.3.src.tar.gz 
tar -zxvf go1.3.3.src.tar.gz
  然后将解压出来的“go/misc/vim/”目录下的syntax、ftplugin、indent、compiler、ftdetect五个文件夹复制到"/usr/share/vim/vim74/"目录下:
cp -R go/misc/vim/syntax/ /usr/share/vim/vim74/ 
cp -R go/misc/vim/ftplugin/ /usr/share/vim/vim74/
cp -R go/misc/vim/indent/ /usr/share/vim/vim74/
cp -R go/misc/vim/compiler/ /usr/share/vim/vim74/
cp -R go/misc/vim/ftdetect/ /usr/share/vim/vim74/
 

三、测试:

  文件全部复制好后,创建一个后缀为".go"的文件,输入golang代码试试,看vim golang语法高亮是否生效,我的效果如下:
vim_golang_syntax_highlight.png

 

四、附录:

  可以在用户目录下,添加一个".vimrc"文件,在文件添加一些vim初始设置项,来设置是否现在行号、tab字符宽度、文本缩进等。".vimrc"文件每次使用vim命令时都会自动调用。运行"vim ~/.vimrc"命令,然后添加如下内容:
syntax on
"set number " 显示行号
"set cursorline " 突出显示当前行
set tabstop=4 " Tab键的宽度

" 统一缩进为4
set softtabstop=4
set shiftwidth=4