2016-04-29 14 views
6

Khi cố gắng sử dụng strconv trên một biến truyền qua URL (GET lần tên biến), GoLang không thành công trên biên soạn nêu như sau:strconv.Atoi() ném lỗi khi đưa ra một chuỗi

nhiều giá trị strconv .Atoi() trong một bối cảnh đơn giá trị

Tuy nhiên, khi tôi làm reflect.TypeOf tôi nhận được chuỗi như các loại, trong đó sự hiểu biết của tôi đúng loại của các đối số.

Tôi đã cố khắc phục sự cố này trong vài giờ. Tôi mới đi và đã trở nên khá thất vọng với vấn đề này. Cuối cùng tôi quyết định yêu cầu giúp đỡ. Bất kỳ thông tin phản hồi sẽ được đánh giá cao.

func numbers(w http.ResponseWriter, req *http.Request) { 
    fmt.Println("GET params were:", req.URL.Query()); 
    times := req.URL.Query()["times"][0] 
    time := strconv.Atoi(times) 

    reflect.TypeOf(req.URL.Query()["times"][0]) // returns string 
} 

Trả lời

25

Các lỗi được nói với bạn rằng hai giá trị trở về từ strconv.Atoi (interror) được sử dụng trong một bối cảnh giá trị duy nhất (nhiệm vụ để time). Thay đổi mã thành:

time, err := strconv.Atoi(times) 
    if err != nil { 
     // handle error 
    } 
+0

Cảm ơn sự cố đã khắc phục. Khá lạ là các hàm có thể trả lại nhiều loại giá trị trong Go. Liệu nó có vấn đề thời gian đặt hàng & err là trong? –

+3

@deadbeef: nhiều lợi nhuận là một trong những tính năng cơ bản của ngôn ngữ. Tôi sẽ đề nghị ít nhất là đi qua [Tour of Go] (https://tour.golang.org/) để có được một ý tưởng về cách thức hoạt động của ngôn ngữ – JimB

Các vấn đề liên quan