2016-08-04 3 views
-2

Разделить buf на два ломтика.Как разделить buf на два сегмента в одном коде строки?

Один

buf[:n] 

другой

buf[n:]. 

n может быть больше, чем len(buf). Завершите его только одним строковым кодом.

Есть ли льготный код?

+2

'а, б: = ЬиЙ [: п], ЬеЕ [п:]' – icza

+0

, если п больше чем len (buf). Это будет паниковать .panic: ошибка времени выполнения: пределы среза вне диапазона –

+1

Если 'n' больше, чем' len (buf) ', то что вы хотите сделать? Потому что тогда вы не можете 'buf [n:]'. – icza

ответ

0

Это не элегантное, ни практичное, но оценка находится на одной линии ...

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) 
    } 
} 
Смежные вопросы