2016-08-04 7 views
-2

bufを2つのスライスに分割します。1行のコードで2つのスライスに分割する方法は?

一つは、他の

buf[:n] 

は多分

buf[n:]. 

nlen(buf)よりも大きいです。 1行のコードを使用して終了します。

猶予コードはありますか?

+2

'、B:= BUF [:n]は、BUF [N:] ' – icza

+0

大きいN場合len(buf)よりも。 .panic:ランタイムエラー:スライス境界が範囲外にある –

+1

'n 'が' len(buf)'より大きい場合、あなたは何をしたいですか?そのため、あなたは 'buf [n:]'できません。 – icza

答えて

0

これはエレガントでも実用的ではなく、評価が1行にある...

package main 

import (
    "fmt" 
) 

func main() { 
    buf := "abcdefg" 
    n := 8 

    // fugly one-liner 
    a, b, err := func() (string, string, error) {if n > len(buf) {return "", "", fmt.Errorf("out of bounds")} else {return buf[:n], buf[n:], nil}}() 

    if err != nil { 
     fmt.Println(err.Error()) 
    } else { 
     fmt.Print(a + ":" + b) 
    } 
} 
関連する問題