小编Bli*_*Top的帖子

全局变量内联赋值与组合声明/赋值运算符和另一个未声明的变量丢失范围?

这个Go程序不会编译.它抛出错误global_var declared and not used

package main

import "log"

var global_var int

func main() {

    global_var, new_string := returnTwoVars()

    log.Println("new_string: " + new_string)
}

func returnTwoVars() (int, string) {
    return 1234, "woohoo"
}

func usesGlobalVar() int {
    return global_var * 2
}
Run Code Online (Sandbox Code Playgroud)

但是,当我:=通过new_string在main函数中声明并简单地使用来消除使用运算符的需要时=,编译器看到global_var全局声明并在程序中的其他地方使用时没有问题.我的直觉告诉我它应该知道global_var已经宣布了

go

12
推荐指数
1
解决办法
3万
查看次数

防止元帅在结构的字符串字段上转义引号

我在解析以下结构时遇到问题,其中JsonData是存储在数据库中的JSON字符串.

type User struct {
    Id          uint64  `json:"user_id"`
    JsonData    string  `json:"data"`
}

user := &User {
    Id: 444,
    JsonData: `{"field_a": 73, "field_b": "a string"}`,
}
Run Code Online (Sandbox Code Playgroud)

如果我json.Marshal这个,它将逃避引号,但这将给我JSON:

{
    "user_id" : 444,
    "data": "{\"field_a\": 73, \"field_b\": \"a string\"}"
}
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉marshaller避免转义JsonData字符串并将其放在引号中,所以它看起来像这样?

{
    "user_id" : 444,
    "data": {"field_a": 73, "field_b": "a string"}
}
Run Code Online (Sandbox Code Playgroud)

我宁愿不跳过太多的箍,比如创建一个全新的类似用户的对象和/或解组/重新编组字符串等.

json go

7
推荐指数
1
解决办法
8206
查看次数

按引用设置接口{}参数

我很难理解如何设置已作为指针传递的接口值.我正在尝试按照以下方式完成某些事情:

import "fmt"

var Stuff map[string]interface{}

func main() {
    var num int
    Stuff["key"] = 9001
    get("key", &num)
    fmt.Println("num:", num)
}

func get(k string, v interface{}) {
    *v = Stuff[k]
}
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能使我的程序输出

num: 9001
Run Code Online (Sandbox Code Playgroud)

编辑:是否有可能使用的全能解决方案reflect

interface go

7
推荐指数
2
解决办法
4083
查看次数

Angular - $ stateParams在控制器中为空

我在理解stateParams应该如何工作方面遇到了很多麻烦.我看到的任何地方都表明,item_id当我前往URL时,这应该通过456 /#/manage/456,而是$stateParams一个空对象.此外,在$state传递给MainCtrl 的对象中,我可以通过使用来访问所有参数$state.params,但这似乎是不合需要的和hackish.

angular
    .module('router',['ui.router'])
    .config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider)
    {

        $stateProvider
            .state('manage', 
            {
                url: '/manage',
                templateUrl: '/templates/main.html',
                controller: 'MainCtrl'
            })
            .state('manage.item_id',
            {
                url: '/:item_id',
                templateUrl: '/templates/main.html',
                controller: 'MainCtrl'
            })

    }])
    .controller('MainCtrl', ['$scope', '$stateParams', '$state', function($scope, $stateParams, $state)
    {
        // empty object
        console.log('$stateParams: ', $stateParams);

        // shows the variables i want
        console.log('$state.params: ', $state.params); 
    }])
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

6
推荐指数
1
解决办法
1万
查看次数

处理Go中的动态错误(特别是数据库/ sql包)

使用database/sql包中的东西sql.Exec会返回动态生成的,未引用的错误,例如

"Error 1062: Duplicate entry '192' for key 'id'"
Run Code Online (Sandbox Code Playgroud)

问题是它还可以返回错误,例如

"Error 1146: Table 'tbl' doesn't exist"
Run Code Online (Sandbox Code Playgroud)

从同一个电话到 sql.Exec

如何在没有这两个错误的情况下区分它们

  1. 字符串比较,或
  2. 错误代码的模式匹配

或者这个问题的惯用解决方案是什么?

string error-handling go

5
推荐指数
1
解决办法
2653
查看次数

使用ziutek/mymysql在Go中选择NULL时间戳

我有以下Google Go和MySql,其中有date_update问题的字段经常作为NULL值返回.

var date_update time.Time
query := `SELECT date_update FROM users WHERE user_id=?`
err := conn.QueryRow(query, user_id).Scan(&date_update)
Run Code Online (Sandbox Code Playgroud)

当我运行此查询并碰巧收到该字段的空值之一时,我收到错误 unsupported driver -> Scan pair: <nil> -> *time.Time

我使用其他数据类型处理此方法(例如INT)

SELECT IFNULL(integer_field, 0) FROM table
Run Code Online (Sandbox Code Playgroud)

但它似乎不适用于时间戳或日期时间.有任何想法吗?

mysql go

2
推荐指数
1
解决办法
946
查看次数

在Go中解析数组后表单数据

所以我有这样的形式:

<form method="POST" action="/parse">
    <div>   
        <input name="photo[0]" value="Hey I'm photo zero!" />
    </div>
    <div>
        <input name="photo[1]" value="Photo one here!" />
    </div>
    <div>
        <input name="photo[2]" value="Awh I'm photo 2 but I'm the third photo..." />
    </div>
    <div>
        <button type="submit">submit</button>
    </div>
</form>
Run Code Online (Sandbox Code Playgroud)

在Go中,看起来,net/http库将允许您通过表单中的字符串键一次查询表单数据:

r.PostFormValue("photo[0]")
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以直接将此表单解析为Go中的切片?

也就是说,能够像这样访问照片的元素:

photos := r.PostFormValue("photo");
log.Println(photos[1]);
Run Code Online (Sandbox Code Playgroud)

或者除了字符串改写之外,在Golang中的表单发布数据中正确访问"数组类似"数据结构的任何其他建议......

html forms post go

1
推荐指数
1
解决办法
1994
查看次数

标签 统计

go ×6

angularjs ×1

error-handling ×1

forms ×1

html ×1

interface ×1

javascript ×1

json ×1

mysql ×1

post ×1

string ×1