Go中遇到的几个小问题

简单记录下写go时遇到的一些问题

struct做为map的值

如果map的值为struct的话, 是无法直接通过m[key].member来直接读取对应结构体的变量的, 同时我们也无法直接取它的地址&m[key]. 为什么会这样呢

网上有挺多关于这个的讨论:

这个特性与golang处理map有关: 随着键值的增长, map会重新分配内存. 一个解决方法是将值付给一个变量, 修改它, 然后再赋值回去;)

Read on →
go

Fedora安装swift

在swift.org上的下载页选择对应版本的tar包下载, 下载完毕后直接解压.

接下来配置下环境变量;)

因系统版本不同需要调整下一些库的位置, 程序链接的库路径为lib64:

  • libicui18n
  • libedit
  • libicuuc.so

我本地的库存放在/usr/lib64中, 做一下软链.

此时执行swift应该就能成功了.

Read on →

在rpm打包时避免执行strip操作

今天在打包rpm的时候又遇到了一个问题: 如何避免我的二进制程序不被strip呢? 一些应用有时候需要在环境中进行调试, 而打rpm包的时候会自动把符号等信息去掉.

Read on →
rpm

简单的自我总结

本来是想回顾下2015年的, 不过好像已经过了那个该总结的时间段….. 还是有必要写点东西给自己

工作

工作到现在差不多已经快四年了, 从还没开始工作到现在我都会问我自己: 我到底适不适合做一个程序员? 我现在做的事情是否是我真正喜欢的?

Read on →

在mysql中使用prepared语句

之前遇到这样一个问题: 我想批量删除一些表, 表名是类似table_XXXX, 因此想是否有类似show tables like 'cool_%'语法的操作. 很遗憾, 没有, 但是我们可以借助prepared语句来实现这个功能.

Read on →

在写go的http服务时使用handle来避免全局变量的使用

使用go可以很方便的编写http服务的应用, net/http基础包提供了很多实用的功能. 看下官网的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package main

import (
    "io"
    "net/http"
    "log"
)

// hello world, the web server
func HelloServer(w http.ResponseWriter, req *http.Request) {
    io.WriteString(w, "hello, world!\n")
}

func main() {
    http.HandleFunc("/hello", HelloServer)
    err := http.ListenAndServe(":12345", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}
Read on →
go